先修改帐户名和密码

import requests
from BeautifulSoup import BeautifulSoup
import time

def commitfunc(source_id, refer):
    print source_id, refer
    commiturl='http://download.csdn.net/index.php/comment/post_comment?jsonpcallback=jsonp1419934439524&sourceid='+source_id+'&content=%E6%88%90%E5%8A%9F%E9%85%8D%E5%AF%B9%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E3%80%82&rating=5&t=1419935091974'
    commitdata = {
            "Accept" : "text/javascript, application/javascript, */*",
            "Accept-Encoding" : "gzip, deflate, sdch",
            "Accept-Language" : "zh-CN,zh;q=0.8",
            "Connection" : "keep-alive",
            "Content-Type" :"application/x-www-form-urlencoded",
            "cookie" : "",
            "Host" : "download.csdn.net",
            "Refer" : refer,
            "User-Agent" : "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",
            "X-Requested-With" : "XMLHttpRequest",

            "jsonpcallback" : "jsonp1419934439524",
            "sourceid" : source_id,
            "content" : "a good resource, it's worth to download it",
            "rating" : "5",
            "t" : "1419935091974",
            }
    resp = sess_source.post(commiturl, commitdata)
    print resp.text

def GetPageCount():
    url_source_page = url_source + "1"
    html_source = sess_source.get(url_source_page).text
    soup_source = BeautifulSoup(html_source)
    #resource_once = soup_source.findAll('h3')
    page_count = soup_source.find('div', attrs={'class': "page_nav"}).text
    page_list = page_count.split()
    page_ac = page_list[2].split('&')
    return page_ac[0][1:len(page_ac[0])-1]

def CommitWholePage(page_nu):
    url_source_page = url_source + page_nu
    html_source = sess_source.get(url_source_page).text
    soup_source = BeautifulSoup(html_source)

    resource_once = soup_source.findAll('h3')
    for element in resource_once:
        if(len(element) > 1):
            try:
                #print type(element.contents[0].attrs[0][1])
                #print element.contents[0].attrs[0][1]
                attr = element.contents[0].attrs[0][1].split('/')
                reftext = '/detail/' + attr[2] + '/' + attr[3] + '#comment'
                result = soup_source.findAll('a', attrs={'href' : reftext, 'class' : 'btn-comment'})
                if len(result) != 0:
                    #sess_source.get(url_source_page)
                    commitfunc(attr[3], attr[2])
                    print attr[2]
                    print attr[3]
                    print "sleep"
                    time.sleep(70)
            except Exception, e:
                s = traceback.format_exc()
                print s

def logincsdn():
    html_login = sess_source.get(url_login).text
    soup_login = BeautifulSoup(html_login)

    lt_value = soup_login.findAll('input', attrs={'name': "lt"})[0]['value']
    execution_value = soup_login.findAll('input', attrs={'name': "execution"})[0]['value']
    data_login = {
            "lt" : lt_value,
            "execution" : execution_value,
            "_eventId" : "submit",
            "username" : "用户名",
            "password" : "密码"
            }
    sess_source.post(url_login, data_login)

print "start auto comment"

#main begin
url_login = "http://passport.csdn.net/account/login"
url_source = "http://download.csdn.net/my/downloads/"
sess_source = requests.session()

logincsdn()
total_page = GetPageCount()
print "total page",total_page
for num in range(1,int(total_page)+1):
    print "current page", num
    CommitWholePage(str(num))
print "app stop "

分享一个 CSDN 自动评论角本的更多相关文章

  1. CSDN 自动评论

    转载说明 本篇文章可能已经更新,最新文章请转:http://www.sollyu.com/csdn-auto-reviews/ 说明 当打开http://download.csdn.net/my/do ...

  2. 分享一个微信自动跳转外部浏览器下载app的api接口!

    现在微信渠道可以说是拉新最快的渠道,因为微信具备强裂变性.但是目前微信对第三方下载链接的拦截是越来越严格了,那么想要在微信内肆无忌惮地推广链接就需要用到微信跳转浏览器的接口,那如何获取该接口呢?   ...

  3. python登录csdn并自动评论下载资源脚本

    功能 1.自动登录csdn 2.查找未评论的资源并自动评论 用到的库 1.python自带的requests,获取以及发送网页数据 2.python自带的time,用作休眠,csdn资源一段时间内只允 ...

  4. 分享一个快速设置背景的js 自动获取背景图的长宽

    我来分享一个快速设置背景的js (需要jq支持!) 快速切图铺页面用---就是不需要手动输入背景图的长宽 自动获取背景图的长宽 : <div class="wrap"> ...

  5. 【微信支付】分享一个失败的案例 跨域405(Method Not Allowed)问题 关于IM的一些思考与实践 基于WebSocketSharp 的IM 简单实现 【css3】旋转倒计时 【Html5】-- 塔台管制 H5情景意识 --飞机 谈谈转行

    [微信支付]分享一个失败的案例 2018-06-04 08:24 by stoneniqiu, 2744 阅读, 29 评论, 收藏, 编辑 这个项目是去年做的,开始客户还在推广,几个月后发现服务器已 ...

  6. 分享一个常用Adb命令

    分享一个常用Adb命令 首先 首先感谢@xuxu的常用adb命令,收益良多,但是已经不能满足于我,所以补充了下. 再者 好久没发帖了,最近论坛老司机们都在讨论/总结,我就用这个干货回报吧. 最后 基于 ...

  7. 作业二:个人编程项目——编写一个能自动生成小学四则运算题目的程序

    1. 编写一个能自动生成小学四则运算题目的程序.(10分)   基本要求: 除了整数以外,还能支持真分数的四则运算. 对实现的功能进行描述,并且对实现结果要求截图.   本题发一篇随笔,内容包括: 题 ...

  8. 分享一个Mongodb PHP封装类

    <?php /** * Mongodb 基本操作API,支持基本类似关系统型数据库的操作接口 * * @version 1.0 * [说明] * * 1:该版本API实现了 Mongodb 中最 ...

  9. 分享一个强大的采集类,还可以模拟php多进程

    做采集的时候,可以使用file_get_contents()去获取网页源代码,但是使用file_get_contents采集,速度慢,而且超时时间,不好控制.如果采集的页面不存在,需要等待的时间很长. ...

随机推荐

  1. cocos2dx ResolutionPolicy

    FrameSize 参数,在游戏运行时,我们可以通过 CCEGLView::sharedOpenGLView()->getFrameSize();如果在手机上运行,那么不同分辨率将会得到不同的值 ...

  2. (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单

    原文 (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单 接上一节:(C#)Windows Shell 编程系列2 - 解释,从“桌面”开始展开这 ...

  3. 如何开始一个模块化可扩展的Web App(转)

    原文链接:http://avnpc.com/pages/start-a-modular-extensible-webapp 日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性 ...

  4. 概率图模型(PGM)学习笔记(三)模式判断与概率图流

    我们依旧使用"学生网络"作为样例,如图1. 图1 首先给出因果判断(Causal Reasoning)的直觉解释. 能够算出来 即学生获得好的推荐信的概率大约是0.5. 但假设我们 ...

  5. POJ 1236 Network of Schools(强连通 Tarjan+缩点)

    POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意:  给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...

  6. HTML5.1就要来了

    原文来自https://www.w3.org/blog/2016/04/working-on-html5-1/ 总结一下几个点: 1.六个月内,也就是到九月份的时候,HTML5.1会和大家见面. 2. ...

  7. JavaSE学习总结第05天_Java语言基础1

      05.01 方法概述和格式说明 简单的说:方法就是完成特定功能的代码块 在很多语言里面都有函数的定义,函数在Java中被称为方法 格式: 修饰符返回值类型方法名(参数类型参数名1,参数类型参数名2 ...

  8. hive on spark的安装及问题

    配置hive hive-site <property> <name>hive.metastore.uris</name> <value>thrift:/ ...

  9. [LeetCode]题解(python):024-Swap Nodes in Pairs

    题目来源: https://leetcode.com/problems/swap-nodes-in-pairs/ 题意分析: 给定一个链表,每两个相邻节点就行交换.比如1->2->3-&g ...

  10. 转: seajs手册与文档之 -- require规则

    require 规则 正确拼写 不要修改 使用直接量 动态依赖的小提示 书写规则 使用 SeaJS 书写模块代码时,需要遵循一些简单规则: 1. 正确拼写 在模块代码中,第一个参数 必须 命名为 re ...