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 相关文章推荐
Django的session中对于用户验证的支持
Jul 23 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
python之生产者消费者模型实现详解
Jul 27 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 Python
python中pivot()函数基础知识点
Jan 03 Python
python和opencv构建运动检测器的实现
Mar 03 Python
Python离线安装openpyxl模块的步骤
Mar 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
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
php-fpm中max_children的配置
2019/03/15 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
对Django外键关系的描述
2019/07/26 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
合作经营协议书
2014/04/17 职场文书
授权委托书
2015/01/28 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Redis三种集群模式详解
2021/10/05 Redis
使用Redis做预定库存缓存功能
2022/04/02 Redis