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之模块的加载
Oct 24 Python
python 写的一个爬虫程序源码
Feb 28 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
python批量替换页眉页脚实例代码
Jan 22 Python
python中map的基本用法示例
Sep 10 Python
django的csrf实现过程详解
Jul 26 Python
python计算导数并绘图的实例
Feb 29 Python
python 链接sqlserver 写接口实例
Mar 11 Python
python 日志模块 日志等级设置失效的解决方案
May 26 Python
如何利用python发送邮件
Sep 26 Python
python 定义函数 返回值只取其中一个的实现
May 21 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
Dec 24 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/10/09 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python map和reduce函数用法示例
2015/02/26 Python
python WindowsError的错误代码详解
2017/07/23 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
python try 异常处理(史上最全)
2019/03/07 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
Python 字典中的所有方法及用法
2020/06/10 Python
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
《桂花雨》教学反思
2014/04/12 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
项目合作协议书
2014/09/23 职场文书
党员作风建设自查报告
2014/10/23 职场文书
2015年财务部工作总结
2015/04/10 职场文书
全国助残日活动总结
2015/05/11 职场文书
SQL Server表分区删除详情
2021/10/16 SQL Server