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实现百度关键词排名查询
Mar 30 Python
详解在Python和IPython中使用Docker
Apr 28 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
python交易记录整合交易类详解
Jul 03 Python
Python将主机名转换为IP地址的方法
Aug 14 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
Python3并发写文件与Python对比
Nov 20 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 Python
python爬虫搭配起Bilibili唧唧的流程分析
Dec 01 Python
python解析json数据
Apr 29 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
html中select语句读取mysql表中内容
2006/10/09 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
php验证码实现代码(3种)
2015/09/07 PHP
php session 写入数据库
2016/02/13 PHP
jquery 学习之二 属性相关
2010/11/23 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
师范生实习自我鉴定
2013/11/01 职场文书
客户经理岗位职责
2013/12/08 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏