java实现豆瓣回帖机器人

最近一直帮老板写爬虫,写累了就寻思着找点乐子,碰巧平时喜欢逛豆瓣,就打算写一个自动回帖机器人,废话不多说我们进入正题:

主要用到2个开源工具:Jsouphttpclient

Step 1:模拟登陆

public static boolean login() throws IOException{
        String captcha_id=downloadPic(login_url,"D:\\yz.png");//下载验证码图片到本地
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("请输入验证码:");
        String yan = br.readLine();
        HttpPost httppost = new HttpPost(login_url);
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("captcha-id", captcha_id));//用firebug自己找
        params.add(new BasicNameValuePair("captcha-solution", yan));//验证码
        params.add(new BasicNameValuePair("form_email", form_email));//用户名
        params.add(new BasicNameValuePair("form_password", form_password));//密码
        params.add(new BasicNameValuePair("redir", redir));//跳转地址,一般是自己主页
        params.add(new BasicNameValuePair("source", "main"));
        params.add(new BasicNameValuePair("login", "登录"));
        httppost.setEntity(new UrlEncodedFormEntity(params));
        CloseableHttpResponse response = httpclient.execute(httppost);//执行这个post

        int statuts_code=response.getStatusLine().getStatusCode();//获得服务器返回状态码

        if(statuts_code!=302){
            System.err.println("登录失败~");
            return false;
        }

        else{
            System.err.println("登录成功~");
        }
        httppost.releaseConnection();
        return true;
    }

Step 2:利用火狐浏览器的firebug插件查看发帖时post哪些参数给服务器

一般是这4个参数:ck、rv_comment、start、submit_btn

发帖代码如下:

  public static boolean startPost(String url) {//参数url即为帖子地址

        try{
           String html=getPageHtml(url);
           Pattern p=Pattern.compile("呃...你想要的东西不在这儿");
           Matcher m=p.matcher(html);
           if(m.find()){
               return false;
           }

           Pattern p3=Pattern.compile("该话题已被小组管理员设为不允许回应");
           Matcher m3=p3.matcher(html);
           if(m3.find()){
               return false;
           }

           Pattern p2=Pattern.compile("请输入上图中的单词");
           Matcher m2=p2.matcher(html);
           if(m2.find()){
               System.out.println("要输验证码了~暂停10分钟");
               Thread.sleep(600000);
               return false;
           }

        HttpPost httppost = new HttpPost(url+"add_comment#last");
        httppost.addHeader("Connection", "keep-alive");
        List<NameValuePair> params2 = new ArrayList<NameValuePair>();
        params2.add(new BasicNameValuePair("ck", "xNxg"));//这个参数很重要一定要自己用firebug查看,否则发不了贴
        params2.add(new BasicNameValuePair("rv_comment",getComment()));//getComment()是我自己写的随机返回一个评论的函数
        params2.add(new BasicNameValuePair("start", "0"));
        params2.add(new BasicNameValuePair("submit_btn", "加上去"));
        httppost.setEntity(new UrlEncodedFormEntity(params2,"utf-8"));
        CloseableHttpResponse response = httpclient.execute(httppost);
        int status_code=response.getStatusLine().getStatusCode();

        if(status_code==302){
            System.out.println("评论成功~ "+url);//评论成功
        }
        else{
            System.out.println("评论失败~ "+url);//评论失败
        }
        httppost.releaseConnection();
        Thread.sleep(1500);
        }catch(Exception e){
            return false;
        }

        return true;
   }

完整代码请查看我的GitHub:   https://github.com/wqpod2g/Douban

感谢这篇帖子的作者:http://www.cnblogs.com/lzzgym/p/3322685.html

时间: 2024-10-19 14:30:49

java实现豆瓣回帖机器人的相关文章

Java获取豆瓣电影《毒液:致命守护者》影评信息

1 package util; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStreamReader; 9 import java.net.MalformedURLExcep

java接入钉钉机器人(带源码)

前言 登录钉钉网页: https://im.dingtalk.com 登录说明文档地址,以备随时查询: https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq 首先新建一个群聊 然后添加一个机器人 随意设置一个 复制 https://oapi.dingtalk.com/robot/send?access_token=229ae977ddb23ac6bdce257ef2cb8938942d254f1a7a9e5397dc1afa47e4b9ad 欢

Java接入图灵机器人,实现与机器人聊天

很多人都玩过微信,其中就有与机器人聊天的功能: 这个图灵机器人网站提供了相关的API接口,可以在程序中利用,过程如下: 1.在图灵机器人网(http://www.tuling123.com/openapi/cloud/home.jsp)注册账户,然后他就会给你相应的API KEY,这在程序中需要用到: 2.在Java程序中接入机器人: String APIKEY = "官网给你的api key";        String INFO = URLEncoder.encode("

Java工程师的终极书单

本份Java工程师的终极书单只在专业的Java技术博客–天天编码上发布,没有授权任何网站与个人转载. 坚持阅读好书是学习Java技术的好方式.但是,市面上与Java技术相关的书籍可谓数不胜数,如何从这些质量参差不齐的众多书中选择出优秀的书籍就成为了Java程序员面对的第一个问题.同时,每个Java程序员的技术水平和知识结构往往差异很大,这导致不同的Java程序员阅读同一本技术书的体验与感受又截然不同. 针对前面提到的Java程序员面对如何选择优秀书籍的两个主要问题,笔者结合自身的阅读Java书籍

Java编程也要从娃娃抓起

因为市面上没有教孩子编程的教程书,于是本文作者自己编了一本.InfoQ的用户朋友们有没有教自己孩子编程的呢?我司倒是有一个教自家跳小苹果的孩子学C语言的. 十二年前,我的小儿子Dave出现在我的办公室,手里拿着Java教程.Dave让我教他编程,这样他就能自己写游戏了. 那时候我已经写了几本关于Java的书,还同时教几门计算机编程课,但那都是面向成人的:Amazon上没有任何适合用来教孩子编程的书.在Google上搜索了几个小时,我能找到的一些为孩子准备的编程教程也只是浅尝辄止,或者是最基础的那

robotframework笔记1--安装与卸载

机器人框架 实现与 Python 和支持也 Jython (JVM)和 IronPython (. net). 在安装框架之前, 一个明显的 先决条件 就是安装至少一个. 下面列出了不同的方法来安装机器人框架本身和解释 更彻底地在随后的部分. 安装与pip 使用pip推荐的方法是安装机器人框架. 随着 标准的Python包管理器包含在最新的Python, Jython和IronPython版本. 如果你已经pip,你 可以执行: pip install robotframework 从源代码安装

关于游戏[小小枪战:反恐精英]的欺骗作假行为

游戏名称 :小小枪战:反恐精英/Little Gunfight:Counter-terror 消费者不是傻瓜! 游戏里面的联网对战功能就是玩家与电脑对战.我只能说,这个游戏公司的AI做的不错. 证据1:源代码 a.a.a.java 里面有一个机器人的玩家名称列表,什么 "极品黑木耳" "爆头王子" "孤与谁共" ...(玩过的人都懂) 证据2:源代码 a.a.b.g.java 里面有一个敏感词列表,就是玩家起名字的时候不允许有敏感词.什么 &qu

关于 Android 平台开发相关的有哪些推荐书籍?

转自:http://www.zhihu.com/question/19579609 作者:Shan Huang 链接:http://www.zhihu.com/question/19579609/answer/12306890 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 学习android开发,我不建议花太多时间在书籍上,因为android的版本更新实在太快了,任何一本书籍都不可能跟上Google的步伐,但是,对于新手来说,买一本入门的书还是可以的,这里我推

robotframework笔记22

创建测试库 支持的编程语言 机器人框架本身是用写的 Python 和自然的测试 库扩展它可以使用相同的实现 语言. 运行时框架上 Jython ,图书馆也可以 实现使用 Java . 纯Python代码Python和工作 Jython,假设它不使用语法或模块 可在Jython. 当使用Python,也是可能的 实现与C库使用 Python C API ,尽管它是 往往更容易与C代码从Python库使用 ctypes 模块. 图书馆使用这些支持本地语言可以实现 也作为包装器使用其他功能实现 编程语