基于Selenium库模拟用户行为的QQ空间爬虫

发布时间 2023-06-02 17:53:25作者: hhr346

QQ空间爬虫

代码链接:https://github.com/hhr346/QQ_zone_crawl

该程序的主要实现过程是进入某位好友的空间中,并自动爬取说说的文本内容并存储到txt文件中。方法是使用Chrome浏览器的自动执行功能,来实现翻页,并对html的源代码进行文本提取,通过正则表达式来实现某一块内容的提取。将发布人名称、说说的文本内容、发布日期都写入一个文本文件中。

主要参考文章链接为(https://blog.csdn.net/weixin_43325134/article/details/105859772)

借鉴了该文章的思路,但根据我自己的需求做了较多的更改,具体有以下几个方面:

  1. 更换了爬取的门户网站,从而更换了之前的自动向下滚动的方式,而是通过翻页的方式来爬取说说;
  2. 没有用pyautogui的库,从而不需要让鼠标一直保持在浏览器上;
  3. 我比较在意动态内容,所以在存储内容上也有所不同,并且将所有动态内容存储到一个文件里,从而更高效的利用空间;
  4. 鲁棒性较好,不会因为刷新问题而找不到按钮从而报错;
  5. 增加了对“展开全文”的点击,从而爬取完整的内容;

具体使用过程:

  1. 下载和自己当前的浏览器版本一致的Chrome Driver,下载网址为(https://chromedriver.chromium.org/);
  2. 填入自己的qq号在my_qq变量里,和要爬取的好友qq号在friendlist,并且在程序运行前先登录桌面端的qq程序,从而更方便快捷的登录qq空间;
  3. 运行程序,并注意可能存在的刷新问题。在出现问题时查看浏览器页面的情况(一般情况下等一段时间就好了)
  4. 在out文件夹里存有爬取的好友列表的说说文件。

注意事项:

  1. 有时候登录可能会比较慢,可以等一会或者重新打开一次(感觉自动登录的速度还不如我直接手动点击呢);
  2. 在网页元素刷新里延时时间很重要,因为刷新不及时导致其还是不能获取也是可能的;
  3. 在使用正则表达式表达时,比较难找到一个普适性的规则,这里本来打算是添加“来自”这个手机标签的,但是有一些说说不会有这个标签(可能是桌面端发的),所以妥协就可能把一部分的来自xxx也加入到日期里了;
  4. 该程序只处理文本,所以图片和只转发内容的不包含其中;

总结:

  1. 查找元素这件事还是有些令人头疼,要精准有效又要有普适性,需要尝试较多次才能找到合适的方法(可能想办法表示其最直观的意义比较好);
  2. 其实能找到自己的朋友圈也可以爬取所有好友的动态内容,但是问题在于有没有翻页的选项;
  3. 后续可添加自动获取全部好友qq号列表的功能,循环获取好友的空间信息、评论的获取、评论的展开等;
  4. 解决了展开按钮的点击问题(虽然可能也会有一些漏网之鱼),但是却可能触发了qq的反爬虫机制,到70页左右就会显示“当前访问人数较多”的页面,导致不能继续爬了。

如果还想继续发展可能要自动判断和重试,但需要等较长时间才能恢复正常。