不讲武德的Python反爬神器『fake_useragent』

Hello,大家好哇,我是灰小猿,一个超会写bug的程序猿。

学习过HTTP的小伙伴们应该都知道,我们在进行网站访问时的request请求,通常是需要添加请求头的,否则很多情况下浏览器会认为你是非法请求,从而拒绝你的请求。

因此我们在进行网站的访问的时候一般都会添加请求头,而这其中我们最常用的方法就是添加user-agent来将本次请求伪装成浏览器,这样我们在进行访问网站的时候,就不会被认为是非法请求。

那么什么是user-agent呢?

User-agent又叫做用户代理,简称UA,它是一个非常特殊的字符串头,能够使得网站的服务器访问到客户所使用的操作系统、配置信息,CPU类型、浏览器版本等信息。User-Agent会告诉网站服务器,访问者是通过什么工具来请求的,如果是爬虫请求,一般会拒绝,如果是用户浏览器,就会应答。

而在通常情况下,我们一般写的爬虫会默认告诉服务器自己发送了一个Python爬取请求,而一般网站是不允许被爬虫访问的,主要原因可能是因为会涉及到商业问题。因此,我们通过更改User-Agent字段就可以轻易骗过该网站,避免触发相应的反爬机制。

而Python的fake_useragent库就很好的解决了user_agent需要手动频繁更换的问题。可以说是对于Python爬虫开发一个非常友好的反扒神器了。

接下来我和小伙伴详细介绍一下这个库的使用方法:

由于fake_useragent属于第三方库,所以我们在使用时首先需要使用相应的pip命令导入fake_useragent库,相应的pip命令如下:

pip install fake-useragent

之后在程序中导入该库,查看程序是否报错,如果没有报错则说明安装成功!

 

fake-useragent使用

在安装成功之后,该库的具体使用方法如下:

首先在程序中导入该库,

from fake_useragent import UserAgent

我们要使用的就是它后面的UserAgent方法,我们可以使用该方法随机生成一个请求头。

具体如下:

from fake_useragent import UserAgent
url = 'https://www.sogou.com/web'
headers={
    'User-Agent': UserAgent().random
}
res =requests.get(url=url,params=param,headers=headers)

使用上面的方法我们就可以随机生成一个请求头并且可以很好的避免请求触发反爬机制。并且也减少我们需要频繁更新请求头的麻烦性。

 

实例验证

接下来我们以一个具体的实例来进行fake_useragent库的验证,

根据我们输入的搜索信息,爬取搜狗浏览器页面数据

# 爬取搜狗首页的页面数据
import requests,os
from fake_useragent import UserAgent

url = 'https://www.sogou.com/web'
word=input('enter a word:')
param = {
    'query': word
}

headers={
    'User-Agent': UserAgent().random
}
res =requests.get(url=url,params=param,headers=headers)
print(res.request.headers)
# print(res.text)
html =res.text
file_name= word+'.txt'
with open(file_name,'w',encoding='utf-8') as f:
    f.write(html)
if os.path.exists(file_name):
    print('爬取结束')

好了,关于Python的fake_useragent库的使用就和小伙伴们分享到这里,其中有不足的地方还望大家指正一起进步!

觉得不错记得点赞关注哟!

大灰狼陪你一起进步!

 

猜你喜欢

转载自blog.csdn.net/weixin_44985880/article/details/110882028