Python爬虫之代理问题

对于从事爬虫的程序猿来说,反爬策略是必不可少的,其中添加请求头就是反爬的一种最为简单的策略。还有就是使用代理ip,说白了就是采集数据时采用不同的ip去访问你要采集数据的网址,可能很多人都会问为什么我需要用代理呢?不用不可以吗?用了代理之后发现爬虫抓取数据的速度反而下降了不少于是放弃爬虫代理的使用。当你抓取的数据达到一定量后,或者大批量采集时,你会发现程序会时不时给你报错,而且频率越来越来高。这说你的爬虫被人家识别出来了,对方的反扒系统已经记住了你。通常会告诉你连接超时、连接中断更有甚者不会直接中断你程序,它会给你一些假数据或者将你的爬虫带入一个死循环,还有许多诸如此类的反扒措施这里就不一一介绍了。

User-Agent

这种方式可以理解为把自己的程序访问网站时时已浏览器的方式访问的,为了减少网站识别为爬虫,那么什么是User-Agent呢?
User-Agent是一个特殊字符串头,被广泛用来标示浏览器客户端的信息,使得服务器能识别客户机使用的操作系统和版本,CPU类型,浏览器及版本,浏览器的渲染引擎,浏览器语言等。
不同的浏览器(IE,FF,Opera, Chrome等)会用不同的用户代理字符串(User Agent Strings)作为自身的标志,当搜索引擎(Google,Yahoo,Baidu,Bing)在通过网络爬虫访问网页时,也会通过用户代理字符串来进行自身的标示,这也是为何网站统计报告能够统计浏览器信息,爬虫信息等。网站需要获取用户客户端的信息,了解网站内容在客户端的展现形式,一些网站通过判断UA来给不同的操作系统,不同的浏览器发送不同的页面,不过这也可能造成某些页面无法再某个浏览器中正常显示。
更多关于User-Agent的讲解参见:User Agent的学习

1.获取随机请求头 headers

详情请参考官网: fake-headers 1.0.2

    1. 安装pip install fake_header
pip install fake_headers
    1. 导入fake_headers并随机生成headers
>>> from fake_headers import Headers
>>> headers = Headers(headers=True).generate()
>>> headers
{
    
    'Accept': '*/*', 'Connection': 'keep-alive', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US;q=0.5,en;q=0.3', 'Upgrade-Insecure-Requests': '1', 'Referer': 'https://google.com', 'Pragma': 'no-cache'}

如果不想生成整个headers,也有单独生成User-Agent的插件!

2.获取随机User-Agent与使用

详情请参考官网: fake-useragent 0.1.11

  1. 安装pip install fake_useragent
pip install fake_useragent
  1. 导入fake_useragent并随机生成UserAgent
>>> from fake_useragent import UserAgent
>>> UserAgent().random
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36'
3. User-Agent的使用
'''
将生成的随机User-Agent放入headers传入requests,get()中即可
'''
>>> import requests
>>> url = 'https://blog.csdn.net/Lin_Hv/article/details/106119568'
>>> req = requests.get(url=url, headers=headers)
>>> req
<Response [200]>

猜你喜欢

转载自blog.csdn.net/Lin_Hv/article/details/109090731