python爬虫防止IP被封的方法


本文摘自php中文网,作者little bottle,侵删。

在编写爬虫爬取数据的时候,尤其是爬取大量数据的时候,因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了。本文就如何解决这个问题总结出一些应对措施,这些措施可以单独使用,也可以同时使用,效果更好。

伪造User-Agent

在请求头中把User-Agent设置成浏览器中的User-Agent,来伪造浏览器访问。比如:

1

2

headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}

resp = requests.get(url,headers = headers)

在每次重复爬取之间设置一个随机时间间隔

1

2

3

4

# 比如:

time.sleep(random.randint(0,3))  # 暂停0~3秒的整数秒,时间区间:[0,3]

# 或:

time.sleep(random.random())  # 暂停0~1秒,时间区间:[0,1)

伪造cookies

若从浏览器中可以正常访问一个页面,则可以将浏览器中的cookies复制过来使用,比如:

1

2

cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',UM_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd')

resp = requests.get(url,cookies = cookies)

1

2

3

4

5

6

7

8

9

10

# 把浏览器的cookies字符串转成字典

def cookies2dict(cookies):

    items = cookies.split(';')

    d = {}

    for item in items:

        kv = item.split('=',1)

        k = kv[0]

        v = kv[1]

        d[k] = v

    return d

注:用浏览器cookies发起请求后,如果请求频率过于频繁仍会被封IP,这时可以在浏览器上进行相应的手工验证(比如点击验证图片等),然后就可以继续正常使用该cookies发起请求。

使用代理

可以换着用多个代理IP来进行访问,防止同一个IP发起过多请求而被封IP,比如:

1

2

3

proxies = {'http':'http://10.10.10.10:8765','https':'https://10.10.10.10:8765'}

resp = requests.get(url,proxies = proxies)

# 注:免费的代理IP可以在这个网站上获取:http://www.xicidaili.com/nn/

【推荐课程:Python视频教程】

以上就是python爬虫防止IP被封的方法的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python中记录循环次数的方法

Python中range() 函数的使用介绍(附代码)

Python如何计算1到100的和

深入了解Python之xml操作

Python实现log日志的示例代码

Python怎么右对齐

Python生成器定义与简单用法实例分析

初学Python 请教学习路线

ipad上可以运行Python

总结Python字符串重点内容

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...