实现简易网页采集器UA伪装反爬策略、处理有参数url
优采云 发布时间: 2021-08-17 04:04实现简易网页采集器UA伪装反爬策略、处理有参数url
请求模块实战02——实现简单的网页采集器(UA伪装反爬策略,处理参数url)
目录:
一、防爬机构
对于爬虫用户来说,网站的防爬机制可以说是他们的头号敌人。反爬虫机制是为了防止爬虫过于频繁的爬取数据,给服务器造成过大的负担,导致服务器崩溃而设置的机制。其实有几种不同的方式:
通过UA机制识别爬虫
UA的全称是User Agent,是请求浏览器的身份标识。许多网站 使用它作为识别爬虫的标志。如果访问请求头不收录UA,则判断为爬虫。但是因为这种反爬虫机制很容易被针对,也就是随机UA,所以很少使用这种反爬虫机制。
通过访问频率识别爬虫
爬虫为了保证效率,往往会在短时间内多次访问目标网站,所以可以通过单个IP访问的频率来判断是否是爬虫。而且这种反爬的方式更难被反爬机制反抗,只能通过改变代理IP来保证效率,比如飞宇ip代理。
通过 cookie 和验证码识别爬虫
cookie是指会员账号和密码的登录验证,可以通过限制单个账号爬取的频率来限制爬虫爬行,且验证码完全随机,无法正确识别爬虫脚本,爬虫程序也可以限制。
二、UA 伪装
请求载体标识,一个浏览器发起的请求,请求载体就是浏览器,那么请求的User-Agent就是浏览器的身份,如果是爬虫程序发起的请求,那么载体request是爬虫程序,请求的User-Agent是爬虫程序的身份。服务器可以使用该值来确定请求是浏览器还是爬虫。
我们可以通过正常浏览页面获取允许正常访问的User-Agent。 (网页按F12)
某些portal网站会在访问网站的请求中捕获并判断User-Agent。如果请求的 UA 是爬虫,那么它将拒绝提供请求的数据。
反爬虫策略,让爬虫请求对应的url身份冒充某个浏览器
三、页采集器
Webpage采集器,简单来说就是利用爬虫技术实现有针对性的网页信息爬取程序。我个人的理解是把程序看成一个工具,类似于转换器,用代码实现与网络数据的转换。
四、代码实现
# -*- coding: utf-8
# @Time : 2020/12/7 23:55
# @Author : ZYX
# @File : request实战之网页采集器.py
# @software: PyCharm
import requests
if __name__ == '__main__':
# UA伪装,将对应的user-agent封装到一个字典中
# 对应着谷歌浏览器的一个身份标识
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3776.400 QQBrowser/10.6.4212.400'
}
# 1.指定url
url = 'https://www.sogou.com/web?'
# 处理url携带的参数:封装到字典中
kw = input('enter a word:')
param={
'query':kw
}
# 2.发送请求
# 对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数
response = requests.get(url=url,params=param,headers=headers)
# 3.获得相应数据
page_data = response.text
print(page_data)
# 4.持久化数据存储
fileName = kw+'.html'
with open('./data/'+fileName,'w',encoding='utf-8') as fp:
fp.write(page_data)
print(fileName+'保存成功,爬取数据结束!!!')
分析: