上一篇高德地图爬虫的可能对于一开始入门而言,复杂了点,那这次来个简单的(简单=程序短 我明白)
废话不说,走心(程序)
载入包、获取url及xpath获取指定内容
说明一下:xpath的内容是根据网页具体的内容copy的,操作如下:
1.打开《恶意》短评
2.F12进入开发者模式,F5刷新
3.“Ctrl+shift+C”进行元素检查,选取任意短评框,效果如下图所示:
元素检查Elements中高亮的行即为所选短评对应的代码,点击箭头展开,选中评语内容,右击“copy xpath":
copy xpath这样我们就获取到了我们需要的短评对应的xpath“//*[@id="comments"]/ul[1]/li[2]/div[2]/p/span/text()”,取两个短评对比其xpath发现li[?]决定该页上的短评序号,所以在程序中我们将其用“li[*]”替代,这样得到的就是该页所有短评
这里其实有点小遗憾,我原本是想爬取指定页数的所有短评的,很简单,更改url即可。可以发现
第一页的url:https://book.douban.com/subject/10554309/comments/
第二页的url:https://book.douban.com/subject/10554309/comments/hot?p=2
p决定了该书短评的页数
那么只要在requests的时候加上一个param就好了,如我要获取1~5页,那么修改程序如下:
读取多页短评(这里就还是用到了merge_dicts函数,这个函数在高德地图提到过,就是逐个初始化param的函数)
乍一看没问题,确实没问题,读者可以试一下。读取的数据是随着p改变而改变的。
问题出在保存,to_excel保存会覆盖掉源文件的内容,可我又不想每一页评语用一个excel存。
网上大神有很多方法,貌似有的可以实现在同一个xlsx文件的同一张表下依次排列,我没细看。不过用保存不同表明的方法来分开保存每页数据这个方法是没用的。上图程序用的就是这个方法,结果就是每页数据还是覆盖之前的数据,只是保存的时候表的名字变了而已。这里就期待大家一起努力实现这个功能啦。
这是个简单的爬虫应用,把2个重要的爬虫概念应用到了(当然只是最基础的应用,用到什么再学什么,一次记那么多功能应用,怎么可能上手快?):
网友评论