备案 控制台
开发者社区 大数据 文章 正文

爬虫遇到反爬机制怎么办? 看看我是如何解决的!

简介: 爬取过程中遇到了反爬机制

01 前言

想着爬取『豆瓣』的用户和电影数据进行『挖掘』,分析用户和电影之间以及各自之间的关系,数据量起码是万级别的。

但是在爬取过程中遇到了反爬机制,因此这里给大家分享一下如何解决爬虫的反爬问题?(以豆瓣网站为例)

02 问题分析

起初代码

headers = {
            'Host':'movie.douban.com',
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
            'cookie':'bid=uVCOdCZRTrM; douban-fav-remind=1; __utmz=30149280.1603808051.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __gads=ID=7ca757265e2366c5-22ded2176ac40059:T=1603808052:RT=1603808052:S=ALNI_MYZsGZJ8XXb1oU4zxzpMzGdK61LFA; _pk_ses.100001.4cf6=*; __utma=30149280.1867171825.1603588354.1603808051.1612839506.3; __utmc=30149280; __utmb=223695111.0.10.1612839506; __utma=223695111.788421403.1612839506.1612839506.1612839506.1; __utmz=223695111.1612839506.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=223695111; ap_v=0,6.0; __utmt=1; dbcl2="165593539:LvLaPIrgug0"; ck=ZbYm; push_noty_num=0; push_doumail_num=0; __utmv=30149280.16559; __utmb=30149280.6.10.1612839506; _pk_id.100001.4cf6=e2e8bde436a03ad7.1612839506.1.1612842801.1612839506.',
            'accept': 'image/avif,image/webp,image/apng,image/*,*/*;q=0.8',
            'accept-encoding': 'gzip, deflate, br',
            'accept-language': 'zh-CN,zh;q=0.9',
            'upgrade-insecure-requests': '1',
            #'referer':'',
        } 
url = "https://movie.douban.com/subject/24733428/reviews?start=0"
r = requests.get(url, headers=headers)

上面是基本的爬虫代码,在requests里面设置headers(包含cookie),如果没有反爬机制的话,可以正常爬取数据。

但是『豆瓣』网站有反爬机制!!

爬取就10几页之后,就出现这个验证!!

更关键的是:验证之后接着爬取,几秒后又出现这个,即使设置几秒爬取一次也无法解决!

03 解决方案

方案猜想

根据多年的爬虫经验,首先想到的是设置IP代理,这样就相当于不同用户在爬取网站,因此就通过ip代理去尝试,看看能否解决『豆瓣』的反爬机制。

获取大量IP代理

如果单纯设置一个IP代理,那样跟咱们之前在自己电脑上爬取没有什么区别,因此需要大量的IP代理,通过随机抽取的方式去使用IP代理,这样可以避免同一IP去爬取被『豆瓣』反爬机制禁爬。

IP代理正常来说,很贵,作为白嫖党,这里使用免费ip代理(亲测可用

白嫖过程

https://h.shenlongip.com/index/index.html

白嫖的IP代理平台是:神龙Http,(这里不是广告,只是觉得可以白嫖,跟大家分享)

注册之后,可以免费获取1000个IP代理(详细过程就不介绍了,重点如何使用IP代理解决反爬问题~

这样我们就可以将提取的IP代理放到文本文件中。

设置IP代理

读取IP代理

iplist=[]
with open("ip代理.txt") as f:
    iplist = f.readlines()

刚刚已经将ip全部保存到文本文件中,现在读取出来放到iplist中

随机抽取IP代理

#获取ip代理
def getip():
    proxy= iplist[random.randint(0,len(iplist)-1)]
    proxy = proxy.replace("\n","")
    proxies={
        'http':'http://'+str(proxy),
        #'https':'https://'+str(proxy),
    }
    return proxies

通过random函数,可以在iplist 代理集合中,随机抽取IP代理,并封装成proxies格式(requests的ip代理规定格式)

注解:这里https被注释掉了,因为我这里的ip代理是http,所以有https的话则报错!

IP代理代码


headers = {
            'Host':'movie.douban.com',
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
            'cookie':'bid=uVCOdCZRTrM; douban-fav-remind=1; __utmz=30149280.1603808051.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __gads=ID=7ca757265e2366c5-22ded2176ac40059:T=1603808052:RT=1603808052:S=ALNI_MYZsGZJ8XXb1oU4zxzpMzGdK61LFA; _pk_ses.100001.4cf6=*; __utma=30149280.1867171825.1603588354.1603808051.1612839506.3; __utmc=30149280; __utmb=223695111.0.10.1612839506; __utma=223695111.788421403.1612839506.1612839506.1612839506.1; __utmz=223695111.1612839506.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=223695111; ap_v=0,6.0; __utmt=1; dbcl2="165593539:LvLaPIrgug0"; ck=ZbYm; push_noty_num=0; push_doumail_num=0; __utmv=30149280.16559; __utmb=30149280.6.10.1612839506; _pk_id.100001.4cf6=e2e8bde436a03ad7.1612839506.1.1612842801.1612839506.',
            'accept': 'image/avif,image/webp,image/apng,image/*,*/*;q=0.8',
            'accept-encoding': 'gzip, deflate, br',
            'accept-language': 'zh-CN,zh;q=0.9',
            'upgrade-insecure-requests': '1',
            #'referer':'',
        }
url = "https://movie.douban.com/subject/24733428/reviews?start=0"
r = requests.get(url, proxies=getip(), headers=headers, verify=False)

加了IP代理之后,爬取了几百页也没有遇到过验证问题。轻松爬取万级别的数据没问题。

已经爬取了8677条数据,一直没有验证出现,程序还在继续运行~~~

时间间隔

如果还是遇到验证机制,可以添加时间间隔,在爬取每一页的时候,先让程序暂停几秒(自定义)

time.sleep(random.randint(3,5))

random.randint(3,5)是随机生成3~5之间的数字,因此程序在爬取一次后就随机暂停3~5秒。这样也是一个有效防止触发反爬机制。

04 总结

  1. 讲解了通过IP代理时间间隔去解决反爬验证问题
  2. 白嫖可用的IP代理
  3. 爬取好的数据将会进一步分析和挖掘,本文就讲解如何解决爬虫的反爬问题(毕竟大家时间宝贵,都是碎片化阅读,一下子太多内容难易消化)。
Python研究者
目录
相关文章
东方睿赢
|
13天前
|
数据采集 监控
如何检测和应对网站的反爬虫机制?
如何检测和应对网站的反爬虫机制?
东方睿赢
163 3
东方睿赢
|
13天前
|
数据采集 开发者
如何编写有效的爬虫代码来避免网站的反爬虫机制?
如何编写有效的爬虫代码来避免网站的反爬虫机制?
东方睿赢
25 1
小白学大数据
|
12天前
|
数据采集 Web App开发 搜索推荐
突破目标网站的反爬虫机制:Selenium策略分析
突破目标网站的反爬虫机制:Selenium策略分析
小白学大数据
31 1
小白学大数据
|
7月前
|
数据采集 Web App开发 安全
如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?
如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?
小白学大数据
115 0
小白学大数据
|
10月前
|
数据采集 前端开发 JavaScript
解析网页弹窗验证机制及应对策略的Selenium爬虫案例
解析网页弹窗验证机制及应对策略的Selenium爬虫案例
小白学大数据
145 0
二哥不像程序员
|
数据采集 机器人 Python
Python爬虫|反爬初体验
几种简单高效的反爬虫方法总结。
二哥不像程序员
254 0
Python爬虫|反爬初体验
Python研究者
|
数据采集 存储 JavaScript
我去!爬虫遇到JS逆向AES加密反爬,哭了
JS逆向AES加密
Python研究者
486 0
游客hpxpwccdlvhye
|
数据采集 安全 Python
【安全合规】python爬虫从0到1 -urllib_请求对象的定制(反爬策略)
浏览器渲染引擎,浏览器语言,浏览器插件等
游客hpxpwccdlvhye
131 0
【安全合规】python爬虫从0到1 -urllib_请求对象的定制(反爬策略)
梦想橡皮擦
|
数据采集 Python
Python爬虫入门教程 63-100 Python字体反爬之一,没办法,这个必须写,反爬第3篇
背景交代 在反爬圈子的一个大类,涉及的网站其实蛮多的,目前比较常被爬虫coder欺负的网站,猫眼影视,汽车之家,大众点评,58同城,天眼查......还是蛮多的,技术高手千千万,总有五花八门的反爬技术出现,对于爬虫coder来说,干!就完了,反正也996了~ 作为一个系列的文章,那免不了,依旧拿猫眼影视“学习”吧,为什么?因为它比较典型~ 猫眼影视 打开猫眼专业版,常规操作,谷歌浏览器,开发者工具,抓取DOM节点, https://piaofang.maoyan.com/?ver=normal 注意下图所有的数字位置,在DOM结构中,都是方块。
梦想橡皮擦
2669 0
天降攻城狮
|
数据采集 搜索推荐 Python
24、Python快速开发分布式搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图
【百度云搜索:http://www.lqkweb.com】 【搜网盘:http://www.swpan.cn】 1、基本概念 2、反爬虫的目的 3、爬虫和反爬的对抗过程以及策略 scrapy架构源码分析图
天降攻城狮
5990 0

热门文章

最新文章

  • 1
    高德地图爬虫实践:Java多线程并发处理策略
  • 2
    【AI大模型应用开发】【LangChain系列】实战案例2:通过URL加载网页内容 - LangChain对爬虫功能的封装
  • 3
    使用Python打造爬虫程序之破茧而出:Python爬虫遭遇反爬虫机制及应对策略
  • 4
    Golang爬虫代理接入的技术与实践
  • 5
    Python爬虫面试:requests、BeautifulSoup与Scrapy详解
  • 6
    【专栏】随着技术发展,Scrapy将在网络爬虫领域持续发挥关键作用
  • 7
    实用工具推荐:适用于 TypeScript 网络爬取的常用爬虫框架与库
  • 8
    爬虫实战-Python爬取百度当天热搜内容
  • 9
    网络爬虫与数据采集:使用Python自动化获取网页数据
  • 10
    JavaScript爬虫进阶攻略:从网页采集到数据可视化
  • 1
    JavaScript爬虫进阶攻略:从网页采集到数据可视化
    79
  • 2
    写了个简单爬虫,分析 Boss 直聘自动驾驶岗位
    43
  • 3
    【爬虫pyspider教程】1.pyspider入门与基本使用
    81
  • 4
    Python爬虫-使用代理伪装IP
    464
  • 5
    python爬虫 Appium+mitmdump 京东商品
    540
  • 6
    登录态数据抓取:Python爬虫携带Cookie与Session的应用技巧
    441
  • 7
    给你一个具体的网站,你会如何设计爬虫来抓取数据?
    42
  • 8
    请解释什么是代理服务器,以及在爬虫中如何使用代理服务器?
    143
  • 9
    深入浅出:基于Python的网络数据爬虫开发指南
    55
  • 10
    python爬虫之app爬取-微信朋友圈
    107
  • 相关课程

    更多
  • Python爬虫实战
  • Python网络爬虫实战
  • 劫持发现、定位以及解决的最佳实践
  • 相关电子书

    更多
  • Python第五讲——关于爬虫如何做js逆向的思路
  • 微信客户端怎样应对弱网络
  • 代码未写,漏洞已出——谈谈设计不当导致的安全问题
  • 下一篇
    2024年阿里云免费云服务器及学生云服务器申请教程参考

    深圳SEO优化公司思茅SEO按效果付费多少钱红河百搜标王价格金昌网站搭建公司镇江企业网站建设价格双龙百姓网标王推广报价大芬营销网站多少钱迁安优秀网站设计多少钱荆门网站设计模板公司南联网页制作多少钱塔城百度竞价哪家好迪庆网站建设设计公司鹤岗企业网站改版报价安阳网络推广多少钱江门网站优化公司邯郸高端网站设计推荐梧州网站定制推荐泸州百度网站优化排名推荐宜昌网络推广公司广东百度网站优化排名多少钱霍邱网站搜索优化多少钱临夏模板网站建设报价通辽建网站公司遂宁seo网站优化长沙外贸网站设计报价山南关键词排名中山外贸网站设计公司襄阳外贸网站设计多少钱大连SEO按天计费公司安康网站推广系统哪家好新乡网站推广方案歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化