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的ORM框架SQLAlchemy入门教程
Apr 28 Python
python创建列表并给列表赋初始值的方法
Jul 28 Python
python实现分页效果
Oct 25 Python
深入理解Python中的*重复运算符
Oct 28 Python
Python的形参和实参使用方式
Dec 24 Python
Python实现CAN报文转换工具教程
May 05 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
Python脚本调试工具安装过程
Jan 11 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 04 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
php的memcached客户端memcached
2011/06/14 PHP
php设置编码格式的方法
2013/03/05 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
PHP可变变量学习小结
2015/11/29 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
JavaScript 的方法重载效果
2009/08/07 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
js实现翻牌小游戏
2020/07/31 Javascript
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
python解析xml模块封装代码
2014/02/07 Python
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
Python调用服务接口的实例
2019/01/03 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
端午节粽子促销活动方案
2014/02/02 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
导游词之无锡梅园
2019/11/28 职场文书
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript
mysql sock 文件解析及作用讲解
2022/07/15 MySQL