这篇文章主要讲解了“如何通过python获取甲流分布数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何通过python获取甲流分布数据”吧!
1、分析网页的网络数据,取得请求头,并用python的requests包进行解析和读取。
2、分析解析出的包,进行提取和操作
3、将数据提出并存到数据库
思路差不多就是这些,因为有反爬,所以在爬取过程中错了反爬措施,基本的就是解决方案就是User-Agent 用户代理的添加和代理的使用,加上User-Agent,表明你是浏览器访问即可。有时还会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。
User-Agent最好使用真实库,代理最好也是高效的,Referer的来源可以伪装成百度搜索来的。
Mozilla/4.0 (compatible; MSIE 4.0; Windows Me; Trident/4.0; SV1; .NET CLR 1.0.3705; .NET CLR 3.0.04320; msn OptimizedIE8;ZHCN)
Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 3.0.04320; msn OptimizedIE8;ZHCN)
Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) Opera 8.65 [zh-cn]
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QIHU 360EE) ; InfoPath.2; .NET CLR 2.0.50727)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Foxy/2; .NET CLR 2.0.50727; SE 2.x)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727; 360SE)
需要其他版本的UA库,可以找亿牛云。
爬虫如何添加UA:
class ProxyMiddleware(object):
def process_request(self, request, spider):
# 代理服务器(产品官网 )
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "username"
proxyPass = "password"
request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
# 添加验证头
encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
# 设置IP切换头(根据需求)
tunnel = random.randint(1,10000)
request.headers['Proxy-Tunnel'] = str(tunnel)
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.1276.73 Safari/537.36', 'Referer':'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=nike'}
response = requests.get(url=url, headers=headers)
cookie的获取
import requests
class Crawler():
def getCookie(self):
response = requests.get(self.url)
cookie_value = ''
for key,value in response.cookies.items():
cookie_value += key + '=' + value + ';'
self.headers['Cookie'] = cookie_value