python反爬虫,User-Agent方式

模拟客户端

有些网页为了防止别人恶意采集其信息所以进行了一些反爬虫的设置,当我们请求时会报418错误,这是因为你爬的网站做了反爬虫设置

urllib.error.HTTPError: HTTP Error 418

而我们又想进行爬取

可以设置一些Headers信息(User-Agent),模拟成浏览器去访问这些网站

使用urllib,你要创建一个Request对象,用于添加你的headers,如下:

import urllib.request

url='http://www.baidu.com'

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}

request=urllib.request.Request(url,headers=headers)

data=urllib.request.urlopen(request)

当然,一个固定的User-Agent持续的发请求会被锁定,所以我们要用动态的User-Agent,定义一个User-Agent池,定义一个方案来随机获取一个agent(最好把这一部分单独写一个.py文件,通过import导入使用):

import urllib.request
import random


#创建一个agent池
agentPools=[
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36",
    "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0"
]

#随机获取一个agent
def get_UserAgent():
    return agentPools[random.randint(0,2)]


url='http://www.baidu.com'
headers={'User-Agent':get_UserAgent}

request=urllib.request.Request(url,headers=headers)

data=urllib.request.urlopen(request)

补充(关于如何查看游览器的代理信息User-Agent)

方式一:浏览器输入:about:version

方式二:访问http://httpbin.org/get

User-Agent大全

https://blog.csdn.net/jamesaonier/article/details/89003053

注意:即使这么做了,有可能还是会报错,可以更换User-Agent不断尝试,如果所有User-Agent的都行不通,那么这个网站的反爬是经过特殊处理的,我说的这一套方法是解决不了的。

发布了209 篇原创文章 · 获赞 85 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/ck784101777/article/details/103335174