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操作MongoDB基础知识
Nov 01 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
Python使用numpy实现BP神经网络
Mar 10 Python
Python3使用SMTP发送带附件邮件
Jun 16 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
Django实现列表页商品数据返回教程
Apr 03 Python
python访问hdfs的操作
Jun 06 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 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邮件专题
2006/10/09 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python最长公共子串算法实例
2015/03/07 Python
Python模拟用户登录验证
2017/09/11 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
大学生蛋糕店创业计划书
2014/01/13 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
催款函范本大全
2015/06/24 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
python实现简易名片管理系统
2021/04/11 Python
详解Python牛顿插值法
2021/05/11 Python
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript