一:脚本需求
利用Python3查询网站权重并自动存储在本地数据库(Mysql数据库)中,同时导出一份网站权重查询结果的EXCEL表格
数据库类型:MySql
数据库表单名称:website_weight
表单内容及表头设置:表头包含有id、main_url(即要查询的网站)、website_weight(网站权重)
要查询的网站:EXCEL表格
二:需求实现
一:利用openpyxl模块解析excel文件,将查询的网站读取到一个列表中保存
# 解析excel文件,取出所有的urldef get_urls(file_path):wb = load_workbook(file_path)sheet = wb.activeurls = []for cell in list(sheet.columns)[1]:if cell != sheet['B1']:urls.append(cell.value)return wb, urls
二:分析请求发送,伪造请求,取得HTML页面
# 伪造请求,取得html页面def get_html(url):# 定义http的请求Headerheaders = {} # random.randint(1,99) 为了生成1到99之间的随机数,让UserAgent变的不同。 headers['User-Agent'] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537." + str(random.randint(1, 99))# Referer地址使用待查询的网址headers['Referer'] = "/" + url + "/"html = ''try:html = requests.get("/" + url + "/", headers=headers, timeout=5).textexcept Exception:passreturn html
三:分析HTML页面,利用BeautifulSoup模块提取数据
# 利用BeautifulSoup模块从html页面中提取数据def get_data(html, url):if not html:return url, 0soup = bs(html, "lxml")p_tag = soup.select("p.ReLImgCenter")[0]src = p_tag.img.attrs["src"]regexp = pile(r'^http:.*?(\d).gif')br = regexp.findall(src)[0]return url, br
四:数据库连接配置,并获取游标
# 连接数据库def get_connect():conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='root',db='seotest',charset="utf8")# 获取游标对象cursor = conn.cursor()return conn, cursor
五:主程序逻辑编写
if __name__ == "__main__":#命令行执行脚本文件,获取excel文件路径file_path = sys.argv[1]#获取URL列表和excle工作簿wb, urls = get_urls(file_path)#获取数据库连接和游标conn, cursor = get_connect()#获取工作簿当前工作sheetsheet = wb.active#数据库插入语句sql_insert = '''insert into website_weight(main_url, website_weight) values (%s, %s)'''for row, url in enumerate(urls):if not url: continuehtml = get_html(url)data = get_data(html, url)# 插入数据到数据库 cursor.execute(sql_insert, data)# 插入数据到Excel表中cell = sheet.cell(row=row + 2, column=3)cell.value = data[1]# 终端打印插入的数据print(data)mit()conn.close()wb.save(file_path)wb.close()# cmd命令:python3 F:\算法与结构\网站权重.py F:\website.xlsx
三:脚本运行及其实现结果
CMD执行
数据库:
excel文件写入:
如果觉得《Request爬取网站(seo.chinaz.com)百度权重的查询结果》对你有帮助,请点赞、收藏,并留下你的观点哦!