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中实现switch功能实例解析
Jan 11 Python
Python 错误和异常代码详解
Jan 29 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
Django实现发送邮件功能
Jul 18 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
Python实现屏幕录制功能的代码
Mar 02 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
Python如何使用vars返回对象的属性列表
Oct 17 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 Python
 python中的元类metaclass详情
May 30 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Python实例一个类背后发生了什么
2016/02/09 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
构造方法和其他方法的区别
2016/04/26 面试题
财务与信息服务专业推荐信
2013/11/28 职场文书
外企办公室竞聘演讲稿
2013/12/29 职场文书
xxx同志考察材料
2014/02/07 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
PHP实现rar解压读取扩展包小结
2021/06/03 PHP
python析构函数用法及注意事项
2021/06/22 Python