标签:
最近做一个小项目,实现多个论坛的自动化发帖,总体来说不算太难,但有一些网站有很强的限制,做起来也不容易,今天对遇到的问题做个简单的总结。
自动化发帖主要分为两个过程:登陆和发帖
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也可以处理,但处理情况比较单一,应用不方便;
所以后来全部用正则表达式处理,要注意正则表达式过程中,需要转义的字符:()’ ‘ ? 等
标签:
原文地址:http://www.cnblogs.com/purejade/p/4228452.html