python爬虫之如何随机更换User-Agent 关于Connection aborted等问题的解决

python爬虫爬取网站内容时,如果什么也没带,即不带报头headers,往往会被网站管理维护人员认定为机器爬虫。因为,此时python默认的user-agent如Python-urllib/2.1一样。因此,网站管理人员会根据请求的user-agent判定你是不是机器爬虫。所以,此时往往就需要伪装user-agent,模拟成真实的浏览器去取出内容。

一般主要应用Chrome或者Firefox,爬虫应用的时候,可以把他们都放到列表里面。然后import random,使用random.choice(list)随机获取一个user-agent。

不过呢,现在我要介绍一个python里面更为牛逼的方法(嘘,一般人我不告诉他)——fake-useragent

这是python里面的一个useragent池,非常好用!具体怎么用呢?

首先,安装fake-useragent

    pip  install  fake-useragent

然后,使用方法:

from  fake_useragent   import  UserAgent

ua = UserAgent()

headers = {'User-Agent':ua.random}

注意,有些网站可能会根据user-agent来封IP,也就是说他们会根据同一个IP下,如果是很多个不同user-agent在访问,那么,此时,他们就会判定为爬虫! 

错误类型

在爬虫中报如下的错误:

requests.exceptions.ConnectionError: (‘Connection aborted.’, RemoteDisconnected(‘Remote end closed connection without response’,))

解决方法

(1)随机切换User-Agent:

user_agent_list = ["Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",

                    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",

                    "Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/61.0",

                    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",

                    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36",

                    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",

                    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",

                    "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15",

                    ]

                headers['User-Agent'] = random.choice(user_agent_list)

(2)访问频率的设置: 

time.sleep(6) #测试一下,如果是与访问频率有关可设置时间长一点 

(3)使用代理ip:

self.proxies = {

            "http": ip,

            "https":ip,

        }

你可能感兴趣的:(python爬虫之如何随机更换User-Agent 关于Connection aborted等问题的解决)