先修改帐户名和密码

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. JavaWEB开发中的/到底代表什么

  2. 【转】AC算法详解

    原文转自:http://blog.csdn.net/joylnwang/article/details/6793192 AC算法是Alfred V.Aho(<编译原理>(龙书)的作者),和 ...

  3. ASP.net WebAPI 上传图片

    [HttpPost] public Task<Hashtable> ImgUpload() { // 检查是否是 multipart/form-data if (!Request.Cont ...

  4. ie浏览器css中的行为expression详解

    CSS中的行为——expression (ie only) 最近对CSS中的行为比较感兴趣,虽然是不符合标准的也只有ie才能识别,但是他确实给css的功能扩展了不少.下面是摘自互联网上的文字和例子,因 ...

  5. 射频识别技术漫谈(7)——ID卡

    ID(Identification)是识别的意思,ID卡就是识别卡.ID卡包含范围广泛,只要具有识别功能的卡片都可以叫ID卡,例如条码卡,磁卡都可以是ID卡,我们这儿说的当然是射频识别卡. 射频ID卡 ...

  6. Android JNI入门第五篇——基本数据类型使用

    前面讲到了java和native数据类型,这里就开始做一下使用: 第一步:新建工程 第二部:书写 java方法: public class NativeMethod { static { System ...

  7. URlRewriter组件下载及使用说明

    下载地址:http://www.chx99.cn/file/URLRewriter.rar在web.config添加如下配置节: <httpHandlers>    <add ver ...

  8. 优酷DEMO

    http://v.youku.com/v_show/id_XMTQxOTc4ODA4OA==.html http://v.youku.com/v_show/id_XMTQxOTc5MjU1Mg==.h ...

  9. SQLserver查询数据类型为ntext是空或NULL值的方法

    --为空的值text ntext select * from lf_newsNg_utf where datalength(newsContentE)=0 or datalength(newsCont ...

  10. Linux下Tomcat catalina.out自动归档,以及logrotate 配置详解

    Linux下Tomcat catalina.out自动归档 如果 catalina.out 日志达到 2GB 大小的时候,Tomcat 因为缓存问题,便没有办法继续输出日志了.  为了避免这种情况,你 ...