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的Scrapy爬虫框架简单学习笔记
Jan 20 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
使用Python实现简单的服务器功能
Aug 25 Python
python将字典内容存入mysql实例代码
Jan 18 Python
python计算日期之间的放假日期
Jun 05 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
Python中turtle库的使用实例
Sep 09 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
Python 在局部变量域中执行代码
Aug 07 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
Feb 20 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
用缓存实现静态页面的测试
2006/12/06 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
Django Admin实现上传图片校验功能
2016/03/06 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
pycharm安装和首次使用教程
2018/08/27 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
英国现代绅士品牌:Hackett
2017/12/17 全球购物
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
怎样写演讲稿
2014/01/04 职场文书
四下基层实施方案
2014/03/28 职场文书
学校开学标语
2014/10/06 职场文书
关于工作经历的证明书
2014/10/11 职场文书
2014年检验员工作总结
2014/11/19 职场文书
Golang 字符串的常见操作
2022/04/19 Golang