自动化发帖工具实践

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

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

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也可以处理,但处理情况比较单一,应用不方便;

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

时间: 2024-08-29 05:40:19

自动化发帖工具实践的相关文章

Cobbler自动化部署最佳实践

第1章 Cobbler自动化部署最佳实践 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的. 面对生产环境中不同服务器的需求,该如何实现批量部署多版本的操作系统呢?Cobbler便可以的满足这一实际需求,实现多版本操作系统批量部署. 笔者QQ:572891887 Linux架构交流群:471443208 1.1 Cobbler简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整

MySQL数据库性能优化及自动化运维实践教程!DBA日常工作

MySQL数据库性能优化及自动化运维实践教程!本文作者将站在更加全面的角度分享他在这一年多 DBA 工作中的经验,希望可以给大家带来启发和帮助. DBA 的日常工作 我觉得 DBA 真的很忙,我们来看看 DBA 的具体工作:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用. 上面这些是我们 DBA 的功能,了解这些功能以后要对体系结构有更加深入的了解,你不知道怎么处理这些故障和投诉的事情. 所以我们要去了解缓存/线程.SQL 优化.存储引擎.SQL 审计以及锁与实务:体系结构更深一点,就去

项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程

之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估计血压爆表了. 对于大点的java web项目,我们需要用到Tomcat 9.0 M10,gradle 3.2.1,IntelliJ 来搞定这一档子事. 1.软件下载安装,见<项目自动化建构工具gradle 入门0--环境 & 废话>. 2.打开IntelliJ,File -> Ne

web 环境搭建00前端自动化构建工具(gulp)

web 环境搭建----前端自动化构建工具(gulp): 1----先下载安装node.js 2----然后在node.js命令行安装:npm install gulp -g (全局下载安装gulp插件) 3----然后进入到项目文件夹(命令cd 文件夹名),在项目文件夹中安装依赖文件:npm install gulp --save-dev (根据依赖文件下载gulp插件) 4----在项目文件夹目录下初始化:npm init (初始化文件) {初始化文件后项目中会出现packgae.json文

项目自动化建构工具gradle 入门4——javaWeb在浏览器中显示helloWorld

在java应用中,其实做的最多的还是java web应用.所以现在我们做的就是用gradle构建一个简单的web项目,简单点,直接上代码吧. 1.进入目录D:\work\gradle\web,新建文件build.gradle,键入内容: 1 apply plugin: 'war' // 引入war插件, 2 3 repositories { // 从哪里找jar包 4 flatDir { 5 // 先看下build.gradle文件所在目录下的 libs目录中有没有 6 dirs 'libs'

项目自动化建构工具gradle 入门0——环境 &amp; 废话

gradle 是一个项目自动化构建工具.同类的产品还有ant ,maven等等.相比之下我更喜欢gradle,它语法简洁.兼容maven.ide集成很好. 学习使用gradle最快的方式是看文档,而且下载到的gradle文档中也包含了所有的文档.但是对于初学者而言或者是对只需要简单实用gradle的人来说,其实没必要去看那么多的文档. 在学习的过程中,我看过一些其他博友的文章,必须承认他们确实比我厉害比我有条例,在文章一开始有很多的铺垫和论述,大多从原理开始且用例子结束.而且很多都是在Mac 或

自动化管理工具puppet

Linux之puppet puppet简介 puppet是一套IT基础设施自动化管理工具,可以管理其整个生命周期,其官方网站:www.puppetlabs.org.其作者Luke Kanies成立了puppetLabs,于2005年发布0.2版本.puppet基于ruby语言研发,puppet有声明性.基于模型的配置语言,其也有自己的配置编程言. puppet的优势 基于master/agent的认证机制 不依赖于客户端系统的管理权限 可实现配置自动推送给客户端 puppet的版本 0.2 0.

前端自动化构建工具——gulp

gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到某一工程目录下 跟grunt一般,也是需要package.json包依赖文件和一个入口文件 gulpfile.js(其他名字识别不了) 然后就类似的先装上gulp npm install gulp --save-dev 最基本的使用方式是这样:(使用jshint插件校验js代码) var jshin

Grunt——自动化任务处理工具框架

学习文章,详细原文链接:http://yujiangshui.com/grunt-basic-tutorial/ 1. grunt是一个JavaScript任务运行器,自动化任务处理工具,是一个工具框架. 2. grunt基于node.js,用js开发. 3. 安装grunt (1)安装Node.js (2)npm install -g grunt-cil   (注意:安装的并不是Grunt,而是Grunt-cil,即命令行的Grunt,这样可以使用Grunt命令来执行某个项目中的Gruntfi