爬虫能获取到网上的各种信息,那当然就会有很多公司,不想要自己的资源被其他人随随便便的获取。所以,就会有很多平台,会去设置一些反爬虫的手段。
User-Agent:简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等等。
也就是说,假设:一个平台,设置了UA权限,必须以浏览器进行访问
当你使用爬虫脚本去访问该网站的时候,就会出现,访问失败、没有权限、或者没有任何资源返回的结果等错误信息。
比如以下代码,想要直接爬取数据就会爬取失败
import requests
if __name__ == '__main__':
url = 'https://www.sogou.com/tx'
kw = input('enter a word:')
param = {
'query': kw
}
response = requests.get(url=url, params=param)
page_text = response.text
fileName = kw + '.html'
with open(fileName, 'w', encoding='utf-8') as fp:
fp.write(page_text)
print(kw + '.html保存成功,数据爬取成功')
那么我们要怎么获取到User-Agent呢?
在自己的浏览器右键–检查,点击Network,可以查找User-Agent
我们在爬取过程中只需要将User-Agent封装在字典里,代码如下
import requests
# UA 检测:某些门户网站会对访问该网站的请求中的User-Agent进行捕获和判断,如果该请求的UA为爬虫程序,那么就拒绝该提供请求数据。
# UA 伪装:将爬虫的UA伪装成某一款浏览器的身份标识
if __name__ == '__main__':
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/70.0.3538.25 Mobile Safari/537.36 '
}
url = 'https://www.sogou.com/tx'
kw = input('enter a word:')
param = {
'query': kw
}
response = requests.get(url=url, params=param, headers=headers)
page_text = response.text
fileName = kw + '.html'
with open(fileName, 'w', encoding='utf-8') as fp:
fp.write(page_text)
print(kw + '.html保存成功,数据爬取成功')
成功爬取到数据。