资讯专栏INFORMATION COLUMN

Python 从零开始爬虫(六)——动态爬取解决方案 之 手动分析

rozbo / 781人阅读

摘要:之前提到动态加载就两个解决方案手动分析和。背后有许多不为人知的交易进行着,动态爬取的任务就是拦截它们揭开它们的真面目。在爬虫界有着霸王硬上弓的称号,管它情不情愿,来了动态加载也只有屈服的份了。

之前提到动态加载就两个解决方案——手动分析和selenium。接下来的文章我们会来深入探讨它们,本文将首先,重点介绍前者——手动分析

手动分析是一个比较有难度,比较麻烦的解决方案,但优点也很明显:速度快,又能培养我们爬虫的分析能力(重要)。如果链接有规律可循,建议能手动分析就手动分析,不能再上selenium(培养能力挺重要的不是麽?而且快的爬虫谁不想要呢?)

动态的标志

相信大家都有过这样的经历——进入一个网页,鼠标到处点,滑轮上下滚,各种框框各种信息都蹦出来了,但是网页链接没变过,网页也没重新刷新过

比如:逛网页版的网易云音乐的评论时,无论评论翻到第几页,网址也不会改变;逛知乎时,鼠标不停往下滚,只要下面还有回答,就会不断的加载出来,同样网址也不会改变;segmentfault的问答区也是

类似这样能不转跳不刷新就能加载新信息的网页,就是用了动态加载。背后有许多不为人知的“交易”进行着,动态爬取的任务就是“拦截”它们11揭开它们的真面目。详细请往下面看

分析什么

首先记住——所有信息在理论上都可以通过请求(链接)获得
然后记住——有些请求需要提交参数,检查headers什么的来防爬
附加一点——大多数动态加载的信息,通常都是json数据

有了这些指引提示我们就能描绘出大概的分析思路

首先我们要找到json数据请求链接,通过F12捉包获得,这种包属于xhr或js里

然后我们通过分析多个json数据的请求链接的参数,规律,推出所有链接的结构

如果json数据是一个post包,我们还要分析要post的参数的内容,规律(加密的另谈)

分析服务器是否检查请求的headers,如是,需要哪些额外headers(指user-agent外)

完成以上四步通常就能获得目标json数据,剩下的就是分析json数据本身,把目标提取出来,方法上一篇文章讲过。

引导实例

继续以某宝为例吧,随便搜一个商品进去,或者点我这个示例商品链接。打开F12,换到Network捉js的包,点到评论那里,很快就弹出很多个包,逐个查看其response,很快就确定了目标包,然后评论换页,捉多几个供链接分析用。

这是一个包的请求链接

通过对比刚才捉到的多个包的链接,和多次试验性发送请求,我们可以分析出链接结构——ua(包括ua)之后参数是不影响请求结果的,currentPageNum是评论页数,auctionNumId是商品id,userNumId可以不要,这样就足以构造所有json数据的请求链接,至于一些决定排序的参数这里就不再多分析,交给读者。

多次试验后发现这个请求链接不需要提交数据,headers加个user-agent就可以返回数据
但是taobao返回的json数据有坑,注意一下

然后提取json数据,这样动态问题就解决了,可以完整的写出爬虫。jd评价的爬取和淘宝类似,详见github。

知难而退,变法再上

但链接乱到毫无规律可言,或者post参数加密到连妈都认不出来(而你也懒得或没能力去分析其加密方法),再或者你上面四步走完折腾了一整天也的得不到信息时,是时候该放手了,机器是死的,人是活的,没必要和服务器玩持久战,加密防爬什么都不是我们写的,破解不出来也是没办法的嘛

既然手动分析不行那只能请selenium大佬上场了,这货能模拟浏览器,能解决大部分动态网站。在爬虫界有着“霸王硬上弓”的称号,管它情不情愿,dalao来了动态加载也只有屈服的份了。这个dalao之后会介绍

下一篇将是一个完整的动态爬取实例,顺便接触一下带post参数的请求。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41709.html

相关文章

  • Python 从零开始爬虫(八)——动态爬取解决方案 selenium

    摘要:然而让虫师们垂涎的并不是以上的种种,而是其通过驱动浏览器获得的解析的能力。所以说这货在动态爬取方面简直是挂逼级别的存在,相较于手动分析更简单易用,节省分析打码时间。一旦设置了隐式等待时间,它的作用范围就是对象实例的整个生命周期。 selenium——自动化测试工具,专门为Web应用程序编写的一个验收测试工具,测试其兼容性,功能什么的。然而让虫师们垂涎的并不是以上的种种,而是其通过驱动浏...

    fobnn 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • Python 从零开始爬虫(七)——实战:网易云音乐评论爬取(附加密算法)

    摘要:通常这种加密都是通过加密的,所以首先要找到这个有加密算法的。追踪函数,发现它指向一个叫的函数,仔细研究许久后大概知道加密算法经两次加密获得,模式为,偏移量为。 前言 某宝评论区已经成功爬取了,jd的也是差不多的方法,说实话也没什么好玩的,我是看上它们分析简单,又没加密才拿来试手的。如果真的要看些有趣的评论的话,我会选择网易云音乐,里面汇聚了哲学家,小说家,story-teller,皮皮...

    plus2047 评论0 收藏0
  • 从0-1打造最强性能Scrapy爬虫集群

    摘要:包括爬虫编写爬虫避禁动态网页数据抓取部署分布式爬虫系统监测共六个内容,结合实际定向抓取腾讯新闻数据,通过测试检验系统性能。 1 项目介绍 本项目的主要内容是分布式网络新闻抓取系统设计与实现。主要有以下几个部分来介绍: (1)深入分析网络新闻爬虫的特点,设计了分布式网络新闻抓取系统爬取策略、抓取字段、动态网页抓取方法、分布式结构、系统监测和数据存储六个关键功能。 (2)结合程序代码分解说...

    vincent_xyb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<