分享

锲而不舍,爬虫的魂

 大邓的Python 2021-02-23

写爬虫经常被封锁,常用的策略有伪装成浏览器,降低访问频率,还有一个是修正一下重新爬。关于代理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库

优雅简洁的列表推导式

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多