用两种非传统的爬虫,我把CSDN博主的底裤都给爬出来了!

大家好,我是小五

写博客也快一年了,突然想了解下同层次的博主的平均水平应该是什么样的(自己写的博客咋样没点B数么 ),今天就来分享下CSDN的博主信息数据的爬取方法~

我们将采用两种非传统爬虫:、

(考虑到周排名、总排名、积分都是根据上述信息综合得到的,对后续分析没实质性的作用,这里暂不爬取。)

1、第一种爬取思路(未果)

思路图如下:

(1)元素定位问题

错的原因:selenium当打开新的页面后,原来定位过的元素都会失效,需要重新定位元素。上面的driver.back()相当于打开的新的页面(但是对于我们来说只是返回原来的页面)

详细内容可参考这篇博客的内容:https://blog.csdn.net/qq_43251443/article/details/82819887

解决方式:只要每次返回目录页后重新定位元素即可,如下所示:

重新定位后,不难发现,这必须要求blog_url和blog_refind_url这两个列表的长度一致啊!那也就是:每次返回目录页后,需要保持在上一次浏览的位置! 由此引发了第二个问题:定位元素的不一致。

(2)定位元素不一致

我们在获取所有的文章链接之前,首先进行的下滑页面的操作。而每次driver.back()之后,页面都会回到最初的位置!这就很头疼,如果要保持一样的浏览位置,难道每次返回后都要下拉相同次数的页面么么此时我们需要解决的问题则是:如何保持上一级页面的浏览位置。emm,查了一些资料,发现这个需求是和javascript相关的。详细可参考这篇博客:https://blog.csdn.net/chu782729918/article/details/59489616

大致解决思路:保存每次下滑的位置,然后最终调用最后一次下滑的位置。但归根到底,还是需要每次滑动页面,依旧很麻烦,这种思路到这也只能不了了之了。(会javascript的朋友可以尝试如何让页面直接恢复到上一级页面浏览的位置)

2、第二种爬取思路(成功)

思路图如下:

如果大家对完整爬虫代码感兴趣,扫码关注「快学Python」后台回复“CSDN” 

三、Webscraper爬取

之前的博客分享过Webscraper是一种轻量级的爬取软件。不想看代码的朋友可以用它来复现上述爬取过程。(注:以下爬取过程只是针对首页的某一个栏目)

最终的爬取线路图如下:

  • Type勾选Element_scroll_down(负责下拉页面)

  • 勾选上Multiple后,点击多个文章所在模块后,则会出现红色选定。此时点击,完成selector的配置。

  • Delay设置为2000毫秒(给予页面反应时间)

此外,需要在selector后面加上,控制爬取的条数,否则它会一直下拉页面!(这里的300则代表需要爬取的总条数)最终,selector的配置如下:

具体内容如下:

以name为例,其内容如下:

最终爬取结果如下(这里仅作演示,只爬取了七条):

总结:Webscraper虽然简单易操作,速度也和selenium差不多,但每次只能爬一个 址,需要连续爬取多个 址,还是得码代码~

凹凸福利

从零开始:Python基础培训教程》Python入门教程:适合新手上路,老手也可以从中学到正确的观念及避坑指南。点击下图可看详情/购买!

本篇点赞过50,下篇就分析爬取的数据  

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92337 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月15日
下一篇 2020年11月15日

相关推荐