爬虫过程中加上这些策略让你采集效率更高

2023-05-10,,



我们都知道在采集数据过程中,尤其是爬取大量数据的时候,很多网站都有反爬虫措施,封

ip是很严重的,,让你在采集的时候很心烦。本文就如何解决这个问题总结出一些应对措施,这些措施可以单独使用,也可以同时使用,效果更好。





、伪造

User-Agent



在请求头中把

User-Agent

设置成浏览器中的


User-Agent


,来伪造浏览器访问。比如:


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)



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


#

比如:


time.sleep(random.randint(0,3))  #

暂停


0~3


秒的整数秒,时间区间:


[0,3]


#

或:


time.sleep(random.random())  #

暂停


0~1


秒,时间区间:


[0,1)



而且最主要的是

ua

要越多越好,不要固定的使用那几个,要经常更换最新真实的


ua





二、



伪造

cookies



若从浏览器中可以正常访问一个页面,则可以将浏览器中的

cookies

复制过来使用,比如:


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


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


#

把浏览器的


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


,比如:


 


# 要访问的目标页面


        targetUrl =


"http://httpbin.org/ip"


 


        


# 要访问的目标HTTPS页面


        


# targetUrl = "https://httpbin.org/ip"


 


        


# 代理服务器


        proxyHost =


"t.16yun.cn"


        proxyPort =


"31111"


 


        


# 代理隧道验证信息


        proxyUser =


"username"


        proxyPass =


"password"


 


        proxyMeta =


"http://


%(user)s


:


%(pass)s


@


%(host)s


:


%(port)s


"


 % {


            


"host"


 : proxyHost,


            


"port"


 : proxyPort,


            


"user"


 : proxyUser,


            


"pass"


 : proxyPass,


        }


 


        


# 设置 http和https访问都是用HTTP代理


        proxies = {


            


"http"


  : proxyMeta,


            


"https"


 : proxyMeta,


        }



(这里是用的亿牛云的动态转发代理进行示例)



不管我们采集什么网站的数据,光有代理是不行的,要配合多种反爬策略一起才能更高效的获取大量的数据。

《爬虫过程中加上这些策略让你采集效率更高.doc》

下载本文的Word格式文档,以方便收藏与打印。