写爬虫经常被封锁,常用的策略有伪装成浏览器,降低访问频率,还有一个是修正一下重新爬。关于代理IP不在本文范畴,我们只需要够用的数据即可,一般一个IP,一台机器慢慢的爬就可以了。

分别看看这几个策略的实现方式:

伪装成浏览器 这是最简单的方式之一,打开开发者工具(F12键),刷新网页。找到骑牛中的headers和cookies参数

import requests

def scraper(url):
    headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}

    cookies = {'Cookie':'你的cookies'}
    
    resp = requests.get(url,headers,cookies)
    """省略。。。解析网页"""
    """省略。。。保存数据"""
 
   
#待爬urls
urls = [...]

for url in urls:
    scraper(url)

降低访问频率 只是模仿成浏览器,网站仍然会封锁你的爬虫。因为咱们的爬虫访问实在是太快了,人家网站服务器hold不住人民群众的爬虫。所以为了不被封锁,可再加上降低访问频率策略。


import requests
import time

def scraper(url):
    headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}

    cookies = {'Cookie':'你的cookies'}
    
    resp = requests.get(url,headers,cookies)
    """省略。。。解析网页"""
    """省略。。。保存数据"""
    

#待爬urls
urls = [...]
for url in urls:
    scraper(url)
    time.sleep(1)

三、锲而不舍slow but steady的精神。 很多网站往往不会封锁你的IP,但是访问受限。比如访问十次该网址,就会封锁你,导致程序报错。我们过断时间咱们重新运行程序,又可以爬数据。

为了减少麻烦,我们可以设置的策略:

当我们知道自己的爬虫被封锁后,降低访问频率,但是还是要一直发送请求。锲而不舍,直到又可以爬。坚持就是胜利。


import requests
import time

def scraper(url):
    headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}

    cookies = {'Cookie':'你的cookies'}
    
    resp = requests.get(url,headers,cookies)
    """省略。。。解析网页"""
    """省略。。。保存数据"""
   

#拥有锲而不舍精神的爬虫(slow but steady)
def scraper_with_perseverance(url):
    Flag = True
    while Flag:
        try:
            #正常爬取,爬取成功后退出循环
            scraper(url)
            Flag = False
        except:
            #被网站封锁后,降低访问频率,但仍坚持重复访问,
            #直到爬取到该url的数据,退出本url的爬虫
            Flag = True
            time.sleep(5)
#待爬urls
urls = [...]

for url in urls:
    scraper_with_perseverance(url)
    time.sleep(1)
		

记住锲而不舍,像乌龟学习。只要让爬虫拥有了中华民族的传统美德,一般情况下数据都能拿到。

tips 如果爬的还是太多,建议使用代理IP,但是代理IP对于初学者有点难度。如果能对小白友好的方式愉悦的上网和更改IP,还能畅游海内外网站,而且又能接受付点费用这点小代价,那么可以采纳大邓的tips。网址在下面的图片中,可手动敲入该网址。