您的位置:首页 > 编程语言 > Python开发

豆瓣机器人 自动加入/退出小组、自动在小组发帖/删帖、自动回复 Python实现代码 豆瓣爬虫

2017-12-06 18:52 1361 查看
用Python实现了一个在豆瓣上 自动加入/退出小组、自动在小组发帖/删帖、自动回复 的小工具。

代码请见github:https://github.com/echoTheLiar/DoubanAuto

主要实现原理阐述如下:

1. 要在豆瓣上自动完成针对小组的操作,首先需要模拟浏览器登录,此处利用cookie携带登录信息,如利用上述代码,请在Chrome浏览器中右键检查,将获得的Cookie信息复制到代码文件 config/doubanCookies.txt 下替换原有内容即可



2. 自动加入小组:发帖的前提是加入小组。加入小组利用代码实现时,通过抓取相应的加入小组的链接,再利用get请求即可。我在示例代码中演示了如何加入活跃的小组,可以修改代码按自己意愿调用;此处活跃小组是之前爬取到的豆瓣上成员超过10000的小组id,如需下载,请见http://download.csdn.net/download/doleria/10143962 ,没有这个文件也不影响功能,注释掉相关代码行即可;

3. 自动发帖、回帖:手动在浏览器中进行发帖操作(前提:在已加入的小组里),然后利用抓包程序(如fiddler)查看这一过程中POST或GET的具体参数,此处不再赘述;需要注意的是,有个ck参数,会随着用户变化而变化,代码实现时在cookie中取),具体见 util/doubanutil.py 中的相关方法

4. 验证码识别:验证码识别模块调用百度OCR接口,自测识别率不是很高,但基本能满足要求。如要使用该功能,需要申请百度开发者账号,不再赘述(后续考虑自己实现验证码识别,敬请期待~);在该模块中,首先爬取发帖界面的html源码,取出验证码的存储地址,下载至本地 image/目录下,由于验证码有可能重复,为避免重复存储验证码图片,将图片地址命名为图片文件的md5值。这样,每次下载图片后,计算文件的md5值,如果已存在,则不保存至本地。

5. 对了,我在代码里用到了函数式编程的设计模式(filter模式),主要体现在group文件夹下的join.py quit.py remove.py三个文件当中,因为加入小组、退出小组及移除帖子都需要获取相应的链接,在此处有共性也有差异。所以做了抽象,具体参见代码实现。

欢迎批评指正,提出意见。

===============================================

代码请见github:https://github.com/echoTheLiar/DoubanAuto

===============================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息