自动化发帖工具实践

时间:2024-03-06 14:16:44

 

最近做一个小项目,实现多个论坛的自动化发帖,总体来说不算太难,但有一些网站有很强的限制,做起来也不容易,今天对遇到的问题做个简单的总结。

自动化发帖主要分为两个过程:登陆和发帖

1)登陆中实现难点

赶集网中cookie比较难获取,以及登陆用https,需要特定设置抓取; 58登陆的实现需要用rsa和md5加密,需要pyv8调用js来实现;

登陆过程中验证码的识别,这个是最难的。 python实现利用pytesser调用tesseract来实现验证码识别,也可以自己编写验证码识别程序;

登陆过程中post数据加密或者多次交互的结果

总结:找到提交的关键请求;对请求的每个参数进行分析和获取

2)发帖过程

类型实现模糊匹配,首先需要将类型抓取下来;其次调用模糊匹配类

3)编码问题

数据编码-> 程序编码-> 网站编码  尽可能在解析过程中保持一致,这样避免出现乱码,或者无法解析; 过程中用unicode,调用函数时要用utf-8或者gbk来实现;

请求响应编码,要解析,首先对编码进行分析

总结:可以用chardet来检测编码类型,或者isinstance,type来查看编码,进行decode或者encode

4)数据格式

主要是时间,数字,字符

用专门的类来处理时间解析,用特定的类是实现正则表达式抓取特定的数字和特定内容

5)无结构数据输出

response响应的结果可能是object,也可能是array,其中特定字段可能不存在;所以需要应用健全函数对dict或者array进行输出,对某个输出进行边界检测;

6)界面设计

用pyqt4来实现

7)http请求

用requests中session来实现交互

8)网页解析

用beautifulsoup来解析网页,比较健全的类,但带来很大的内存消耗,比较慢,无法释放(不知道怎么处理)

HTMLParser也可以处理,但处理情况比较单一,应用不方便;

lxml 是xml的解析类库,速度和精确度都非常快

所以后来全部用正则表达式处理,要注意正则表达式过程中,需要转义的字符:()’ ‘ ? 等

9)数据包分析工具

Chrome,firefox+firebug+Fiddler2(推荐使用),wireshark工具