Request爬取网站(seo.chinaz.com)百度权重的查询结果
一:脚本需求
利用Python3查询网站权重并自动存储在本地数据库(Mysql数据库)中,同时导出一份网站权重查询结果的EXCEL表格
数据库类型:MySql
数据库表单名称:website_weight
表单内容及表头设置:表头包含有id、main_url(即要查询的网站)、website_weight(网站权重)
要查询的网站:EXCEL表格
二:需求实现
一:利用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执行
数据库:
excel文件写入:
Request爬取网站(seo.chinaz.com)百度权重的查询结果的更多相关文章
- 如何使用robots禁止各大搜索引擎爬虫爬取网站
ps:由于公司网站配置的测试环境被百度爬虫抓取,干扰了线上正常环境的使用,刚好看到每次搜索淘宝时,都会有一句由于robots.txt文件存在限制指令无法提供内容描述,于是便去学习了一波 1.原来一般来 ...
- 使用scrapy爬取网站的商品数据
目标是爬取网站http://www.muyingzhijia.com/上全部的商品数据信息,包括商品的一级类别,二级类别,商品title,品牌,价格. 搜索了一下,python的scrapy是一个不错 ...
- 利用linux curl爬取网站数据
看到一个看球网站的以下截图红色框数据,想爬取下来,通常爬取网站数据一般都会从java或者python爬取,但本人这两个都不会,只会shell脚本,于是硬着头皮试一下用shell爬取,方法很笨重,但旨在 ...
- requests 使用免费的代理ip爬取网站
import requests import queue import threading from lxml import etree #要爬取的URL url = "http://xxx ...
- Python 利用 BeautifulSoup 爬取网站获取新闻流
0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup: ...
- python 实现爬取网站下所有URL
python3 实现爬取网站下所有URL 获取首页元素信息: 首页的URL链接获取: 遍历第一次返回的结果: 递归循环遍历: 全部代码如下: 小结: python3.6 requests && ...
- Python脚本爬取网站美女照片
上次无意之中看到一个网站,里面全是美女的照片,我就心想,哪天有时间了得把这网站的所有美女照片都得爬下来.今天有时间,写了点代码,爬去了网站的所有照片.附上战果!图片实在是太多了,爬半个多小时 先附上所 ...
- seo-mask -- 为单页应用创建一个适合蜘蛛爬取的seo网站
seo-mask seo-mask是利用搜索引擎蜘蛛的爬取原理(蜘蛛只会爬取网页的内容,并不会关心解析网页里的css和js),制作一套专门针对seo的镜像网站,鄙人称它为针对seo的mask,让蜘蛛看 ...
- python request爬取百度贴吧
import requests import os import shutil import time class PostBarSpider(object): def __init__(self, ...
随机推荐
- 解决Linux关闭SSH,终端后运行程序终止问题(包括后台)
问题描述: 每次SSH到服务器上,然后运行了一个自己写的服务端程序,比如 ./myserver.sh ,然后关闭ssh或者终端之后,发现服务不能访问. 简要分析下: 根据 这篇博文 的提示,ss ...
- MacOS & dock 工具栏 & 外接显示器 & 主屏
MacOS & dock 工具栏 & 外接显示器 & 主屏 macos 如何将 dock工具栏从外接显示器拖回主屏 https://support.apple.com/zh-c ...
- 深入理解JAVA虚拟机阅读笔记3——垃圾回收器
一.垃圾收集器总览 新生代:Serial. ParNew. Parallel Scavenge 老年代:CMS.Serial Old. Parallel Old 最新的:G1 并行和并发的区别: 并行 ...
- springmvc+mybatis 处理图片(一):上传图片
一直觉得上传图片文件之类的很难,所以最后才处理图片,发现也并没有那么难,开始正文. 思路:将前台上传的file存到MutipartFile类型字段中,再将MulipartFile转换为pojo类中的b ...
- [洛谷P4819][中山市选]杀人游戏
题目大意:有一张$n$个点$m$条边的有向图,有一个关键点,如果你访问一个点,你会知道它连出的边中有没有关键点,以及若有的话是哪个.问最优策略下不访问关键点而知道关键点的概率 题解:发现若一个点不是关 ...
- 【整体二分】【P3527】 [POI2011]MET-Meteors
Description 有 n 个国家,总共占有一个环,环被分成了 m 段,已知有 k 次流星雨会落在这个环上的一些位置.再给出每个国家目标收集多少流星,对每个国家求出第几次流星雨后可以满足这个国家的 ...
- JavaScript匿名函数知多少
在一些Javascript库中可以看见这种写法: function(){ //所有库代码代码 }(); 这样写的一个目的是——封装. JavaScript并不是面向对象的,所以它不支持封装.但是在不支 ...
- 树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)
前提是数的范围较小 1 数据范围:O(n) 2 查第k大的数i:log(n)(树状数组查询小于等于i的数目)*log(n)(二分找到i) 3 添加:log(n) (树状数组) 4 删除:log(n) ...
- windows下Python三步安装pip
pip是用来方便地管理Python的第三方包的,由于此前玩Python仅仅是浅尝辄止,用的是python(x,y),但是这里并不代表你想用什么包都能从里面找到的,所以我把python(x,y)卸了,然 ...
- linux tmux命令小结
http://note.youdao.com/noteshare?id=f1be507b4be27e53684b46a1424746b5