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中对通过测试的用户进行限制访问的方法
Jul 23 Python
python安装教程 Pycharm安装详细教程
May 02 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
详解Python使用tensorflow入门指南
Feb 09 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
对Python中的条件判断、循环以及循环的终止方法详解
Feb 08 Python
python实现ftp文件传输功能
Mar 20 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
Python txt文件如何转换成字典
Nov 03 Python
Python基于Faker假数据构造库
Nov 30 Python
python爬虫破解字体加密案例详解
Mar 02 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
中国的第一台收音机
2021/03/01 无线电
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
JS如何生成动态列表
2020/09/22 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
Python记录详细调用堆栈日志的方法
2015/05/05 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
python如何制作缩略图
2019/04/30 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
Python os库常用操作代码汇总
2020/11/03 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
廉洁自律演讲稿
2014/05/22 职场文书
旅游文化节策划方案
2014/06/06 职场文书
开学第一周总结
2015/07/16 职场文书
小学远程教育工作总结
2015/08/13 职场文书
Django migrate报错的解决方案
2021/05/20 Python
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
MySQL池化框架学习接池自定义
2022/07/23 MySQL