通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)

前言

一只好的爬虫它就像是一只宠物
让每一位工程师想要精心的喂养它、呵护它、壮大它
文章相关代码地址:https://github.com/CrawlerBoy

  之前Facebbok爬虫文章发布以后很多小伙伴找我要了自己之前迭代的Requests版本源码学习,在这里我希望大家在爬虫的路上一帆风顺。本期这篇文章讲解Twitter爬虫希望能够帮助准备写Twitter爬虫的小伙伴、或者是对爬虫技术感兴趣的小伙伴们多涨知识、少踩坑!

  结束了一天工作,躺在床上稍微眯了一会,起来洗了一把冷水脸,抓起我的电脑决定记录一下去年上半年曾有过一段缘分的的海外另一社交巨头网站Twitter的爬虫…

  远程办公是真心累!之前的文章里说过我的工作就是常年游走于各大项目组之间打酱油,这不是!本周新增100+网站爬虫任务,人手短缺,这不上面大佬又让我临时过去填坑…

  在写爬虫的时候,发现有些网站的内容真是秀的我一塌糊涂,英语十级的我硬是感觉一拳打在了棉花上!给大家看看数据自行感受一下
通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)_第1张图片

一、构造HTTP请求版本

  闲话我就少说了,进入到本期的主题。先给大家看看构造请求的twitter爬虫源码结构
通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)_第2张图片
  大家可以看到spider文件下面就是twitter的爬虫文件,当初为了踩坑花了一天时间研究twitter的API写了个Requests版本的爬虫!但是由于API一些BT的操作让这个爬虫的局限性很大、发挥不了它的威猛:

  1. 账号简介的API一个cookies限制请求次数(8次/2小时)
  2. 关注/被关注的API一个cookies限制时间(15~20分钟/5小时)
  3. 尤其是里面的视频!被打成了多个视频流。得找到各个存储m3u8格式的API接口组成完整的流(当然!有开源神器,肯定得用啊~

祭神器(youtube_dl):
通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)_第3张图片
  可能很多爬虫工程师不知道它、更没有用过这个神器吧!没事!我也没用过,还是之前一个做C的大佬推荐的。它支持FB、Twitter、油管等很多网站的图片、视频下载(具体可以看看官方文档,里面包括它的使用方式、源码(Python写的)、支持源都写的很详细!

  它的亮点:无需我们像用传统的爬虫的方法找网页里面的JPG/PNG/MP4等URL用Request去下载。用它只需要把包含视频、图片的Twitter页面URL丢进去,其他的操作你就不用管了,交给它即可!它会去挖掘网页中被打散的m3u8格式文件跟图片文件,还原一张完整的图片、一段完整的视频!当然它在下载图片及视频还有更高级的用法:比如使用aria2c提速以及异步重组视频流的命令行参数设置…

  当然对构造HTTP版本的代码我也用了通用的Middleware(拦截重定向、无响应的请求让它们回炉重造几次)
通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)_第4张图片
settings文件中也设置了不少基础的功能,不就是为了对抗反爬机制嘛(我太难了
通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)_第5张图片
当然!只要我们账号充足,那么以上的反爬机制还是能被你的车轮战玩弄于股掌之间的。

流氓不可怕、就怕流氓有文化

二、M端模拟版本

  说到Selenium很多小伙伴可能觉得LOW,我也经常这么想的!我也从来不推荐的!但是呢,要看是用在:哪些网站哪些地方以及如何使用**

  我很推荐大家写爬虫的时候去研究它的反爬、去解决它的反爬,因为在这个过程中不仅能让你的技术有所精进、更能锻炼、强化你解决问题的思维跟能力。

  在写爬虫的时候、如果全方位调研之后暂时找不到更好的方法解决时、我们先想着怎么去实现它让它持续产出、之后可以再回过头来安排它!如果你老跟反爬过不去、想跟他硬碰一下、那么…告辞!

  效率慢资源占用多网络要求高…这些标签说的就是它Selenium了。所以这篇文章我也是写了两套代码来针对性的做出分析,最后再做取舍!

  我会选择使用Selenium的前提:构造暂时无可行性、有M端、还有就是在某些网站BT的地方代替使用一下

  选择使用Selenium也是尽可能精简使用它,比如twitter的帖文在M端是缺失一些重要数据的,所以我在Selenium采集运行的过程中再切换到PC端取缺失的重要数据

切换US实现方法
通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)_第6张图片
Twitter很好的一点就是不封账号、只限制(至少这么久我没有遇到过)抓住这个点,其实这套模拟的代码加上中间的一些调优它的性能以及效果还是挺Nice的!

来!我们看看帖文中那些小视频的片段数据是这样的
通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)_第7张图片
贴文数据是这样的
通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)_第8张图片

单条数据的效果是这样的

通过构造与模拟两套源码的利弊分析Twitter爬虫的反爬机制(附源码讲解)_第9张图片

  好了,到这里又到了跟大家说再见的时候了。我只是一个会写爬虫的段子手而已,一个希望有朝一日能够实现财富自由,能够早日荣归故里的游子罢了。希望我的文章能带给您知识,带给您帮助,带给您欢笑!同时也谢谢您能抽出宝贵的时间阅读,创作不易,如果您喜欢的话,点个赞再走吧。您的支持是我创作的动力,希望今后能带给大家更多优质的文章

你可能感兴趣的:(【爬虫系列】)