Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析


Posted in Python onAugust 13, 2019

一:脚本需求

利用Python3查询网站权重并自动存储在本地数据库(Mysql数据库)中,同时导出一份网站权重查询结果的EXCEL表格

数据库类型:MySql

数据库表单名称:website_weight

表单内容及表头设置:表头包含有id、main_url(即要查询的网站)、website_weight(网站权重)

Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析

要查询的网站:EXCEL表格

Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析

二:需求实现

一:利用openpyxl模块解析excel文件,将查询的网站读取到一个列表中保存

# 解析excel文件,取出所有的url
def get_urls(file_path):
 wb = load_workbook(file_path)
 sheet = wb.active
 urls = []
 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的请求Header
 headers = {} 
 # 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'] = "http://seo.chinaz.com/" + url + "/"
 html = ''
 try:
 html = requests.get("http://seo.chinaz.com/" + url + "/", headers=headers, timeout=5).text
 except Exception:
 pass
 return html

三:分析HTML页面,利用BeautifulSoup模块提取数据

# 利用BeautifulSoup模块从html页面中提取数据
def get_data(html, url):
 if not html:
 return url, 0
 soup = bs(html, "lxml")
 p_tag = soup.select("p.ReLImgCenter")[0]
 src = p_tag.img.attrs["src"]
 regexp = re.compile(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()
 #获取工作簿当前工作sheet
 sheet = wb.active
 #数据库插入语句
 sql_insert = '''insert into website_weight(main_url, website_weight) values (%s, %s)'''
 
 for row, url in enumerate(urls):
 if not url: continue
 html = 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)
 conn.commit()
 conn.close()
 wb.save(file_path)
 wb.close()

# cmd命令:python3 F:\算法与结构\网站权重.py F:\website.xlsx

三:脚本运行及其实现结果

CMD执行

Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析

数据库:

Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析

excel文件写入:

Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python tkinter事件高级用法实例
Jan 31 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
解决django 新增加用户信息出现错误的问题
Jul 28 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
python 公共方法汇总解析
Sep 16 Python
python数据类型可变不可变知识点总结
Mar 06 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
python实现TCP文件传输
Mar 20 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 Python
使用npy转image图像并保存的实例
Jul 01 Python
python打包生成so文件的实现
Oct 30 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 Python
python实现对服务器脚本敏感信息的加密解密功能
Aug 13 #Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 #Python
Python字符串处理的8招秘籍(小结)
Aug 13 #Python
python实现批量修改服务器密码的方法
Aug 13 #Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 #Python
Python实现微信翻译机器人的方法
Aug 13 #Python
python读写csv文件的方法
Aug 13 #Python
You might like
打造计数器DIY三步曲(中)
2006/10/09 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
php类常量的使用详解
2013/06/08 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
python遍历类中所有成员的方法
2015/03/18 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
市场营销专业推荐信
2013/11/03 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
蓝颜请假条
2014/04/11 职场文书
会计学自荐信
2014/06/03 职场文书
求职自我评价范文100字
2014/09/23 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
SQL 聚合、分组和排序
2021/11/11 MySQL