阅读文本大概需要 4 分钟。
随着 Python 越来越火爆爬虫这个行业也逐渐被人所重视起来,但市面上教的一些爬虫的技巧大多是一些基础类的知识,然而在实际的爬虫工作中你会遇到各种各样的问题。比如抓取到的网页字体显示乱码、某个网站使用了滑块验证码、某个网站使用了短信验证
如何高效的解析数据、各个解析库又有什么区别、如何把数据插入到各个数据库中等等。
所以我想把我在实际爬虫工作中会使用到的技巧,都分享给大家。让一些日后想走上爬虫这条职业道路的人,学习到真正实用的知识。这些技巧都是我实际工作中会一直使用,有些是从爬虫老师傅那学到的,有些是自己磕磕碰碰总结出来的经验。这个系列我会一直更新下去,也是总结自己的一些爬虫经验。话不多说,今天就先教大家一个非常实用的爬虫技巧。
随机构造请求头
反爬是爬虫非常重要的内容之一,爬虫有很大精力是在跟反爬做斗争,而最常见的反爬手段就是构造一个浏览器的请求信息。但大多数人写一个带有请求头的爬虫会是这样写。
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit 537.36 (KHTML, like Gecko) Chrome"}
req = request.get(url, headers=headers)
首先去网上找下或者复制浏览器中的请求头信息,然后复制到自己程序里,在构造一个 headers 字典,最后加到请求体中。这样写法非常的耗时费力,甚至每次写程序你还要去浏览器上复制下请求头信息。
而且这样写最大的缺点是每个请求都带的是同个请求头,而对于一些反爬措施比较强的网站来说就有可能检测到你的爬虫程序,直接把你的 ip 给封锁。
在实际的工作中我每次发起的请求都会用不同的请求头,并且是随机的选取一个请求头。而且用法非常的简单,你只需要两行代码就可以完成。
这里就要给大家介绍一个简单实用的库「fake-useragent」,它可以伪装生成 headers 请求头中的 User Agent 值。使用方法也很简单,大家看下代码就懂的了。
from fake_useragent import UserAgent
for i in range(10):
ua = UserAgent()
headers = {'User-Agent': ua.random}
print(headers)
首先你需要先安装下 fake_useragent 库,然后在导入 UserAgent 类,使用它的 random 函数,每次运行后就会随机给你返回一个请求头,随机性非常的强,而且都不带重复。
甚至你可以制定生产某种浏览器的请求头
from fake_useragent import UserAgent
ua = UserAgent()
# ie user agent
print(ua.ie)
# opera user agent
print(ua.opera)
# chrome user agent
print(ua.chrome)
# firefox user agent
print(ua.firefox)
# safri user agent
print(ua.safari)
现在我工作中每个爬虫都会使用到这个库,非常的好用。希望大家看完这篇文章之后,也能使用到自己的爬虫程序里。
推荐阅读:
人必有痴,而后有成