写爬虫经常被封锁,常用的策略有伪装成浏览器,降低访问频率,还有一个是修正一下重新爬。关于代理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。网址在下面的图片中,可手动敲入该网址。 历史文章:数据采集selenium驱动器配置详解 icrawler:强大简单的图片爬虫库
抓取单博主的所有微博及其评论
爬虫神器PyQuery的使用方法
pyquery一些自定义的用法
【视频】猫途鹰网站评论数据抓取
【视频讲解】在scrapy框架中如何使用selenium?
【实战视频】使用scrapy写爬虫-爬知乎live
简易SQLite3数据库学习
【视频教程】对视频进行基本操作 【视频】抓包小练习-B站评论数据抓取
fake-useragent库:值得花2分钟学习的库
【视频】爬取饿了么平台上的门店信息
如何抓取视频资源-以头条视频为例
当爬虫遭遇验证码,怎么办
【视频】手把手教你抓美女~
【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”
【视频】快来get新技能--抓包+cookie,爬微博不再是梦
【视频教程】用python批量抓取简书用户信息
识别假货有绝招,就用python爬淘宝评论
用Python抓取百度地图里的店名,地址和联系方式
文本处理分析gensim:用Word2Vec进行文本分析
RAKE:快速自动抽取关键词算法
对于中文,nltk能做哪些事情 用nltk计算词语间的点互信息值PMI
Python NLP中的五大英雄
用SenticNet库做细粒度情感分析
如何对csv文件中的文本数据进行分析处理
复杂网络分析数据准备篇 文本分析之网络关系 用词云图解读“于欢案”
基于共现发现人物关系的python实现 用pyecharts制作词云图 图片数据处理OpenCV:快速入门图片人脸识别
好玩的OpenCV:图片操作的基本知识(1)
好玩的OpenCV:图像操作的基本知识(2)
OpenCV:计算图片有多色 如何对数据进行各种排序? 其他迅雷不给力,我DIY了个下载器 【视频】初学者必看:python环境配置
开扒皮自己微信的秘密
初识装饰器函数 计算运行时间-装饰器实现
花十分钟,给爱机安装个MongoDB chardet库:轻松识别文件的编码格式
使用Python登录QQ邮箱发送QQ邮件 WTF Python: 开启你的懵逼模式 8行代码实现微信聊天机器人 WTF Python: 开启你的懵逼模式
WTF Python:开启懵逼模式第二弹 使用Python+OpenCV进行面部合成
十分钟学会用Flask发邮件 十分钟入门常用的json库 优雅简洁的列表推导式
|