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 相关文章推荐
通过5个知识点轻松搞定Python的作用域
Sep 09 Python
python 编程之twisted详解及简单实例
Jan 28 Python
python生成二维码的实例详解
Oct 29 Python
利用Python如何生成hash值示例详解
Dec 20 Python
pycharm安装和首次使用教程
Aug 27 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
python中的错误如何查看
Jul 08 Python
教你利用Selenium+python自动化来解决pip使用异常
May 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
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
前端常见跨域解决方案(全)
2017/09/19 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
财政专业求职信范文
2014/02/19 职场文书
给校长的建议书300字
2014/05/16 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
服务员态度差检讨书
2014/10/28 职场文书