Python爬虫之代理问题

48 篇文章 1 订阅
8 篇文章 0 订阅

对于从事爬虫的程序猿来说,反爬策略是必不可少的,其中添加请求头就是反爬的一种最为简单的策略。还有就是使用代理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]>
4.如果出现以下错误:
>>> from fake_useragent import UserAgent
>>> UserAgent().random
...
    raise FakeUserAgentError('Maximum amount of retries reached')
fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached

解决方案

>>> from fake_useragent import UserAgent
>>>> UserAgent(verify_ssl=False,use_cache_server=False).random
'Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36'
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫在使用代理时可以通过以下步骤来实现。 首先,我们需要安装Python的请求库,比如requests或者urllib库,以便在爬取网页时发送请求。同时,我们还需要安装相应的代理库,比如selenium或者pyppeteer,以便在爬取时使用代理。 使用requests库的话,可以使用如下代码来设置代理: ``` import requests proxies = { 'http': 'http://127.0.0.1:8080', 'https': 'https://127.0.0.1:8080' } response = requests.get(url, proxies=proxies) ``` 其中,`http`和`https`指定了不同协议下的代理地址和端口号。你可以将上述代码放入你的爬虫代码中的合适位置,然后替换代理地址和端口号为你所使用的代理地址和端口号。然后,通过`requests.get()`方法来发送请求。 如果使用selenium库的话,可以使用如下代码来设置代理: ``` from selenium import webdriver proxy_server = "127.0.0.1:8080" options = webdriver.ChromeOptions() options.add_argument('--proxy-server=%s' % proxy_server) driver = webdriver.Chrome(chrome_options=options) ``` 其中,`proxy_server`指定了代理地址和端口号。你可以将上述代码放入你的爬虫代码中的合适位置,然后替换代理地址和端口号为你所使用的代理地址和端口号。然后,通过`webdriver.Chrome()`方法来创建一个带代理设置的浏览器实例,从而实现使用代理来进行网页爬取。 总结起来,Python爬虫使用代理的方法主要就是通过设置requests库或者selenium库的相应参数来指定代理地址和端口号,从而实现在爬取时使用代理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值