csdn下载资源评论

# coding=utf-8
import urllib
import urllib2
import cookielib
import re
import time, random

username = ''
password = ''

#main page
main_page = 'http://passport.csdn.net'
login_url = 'https://passport.csdn.net/account/login'

#总页数
max_page = 20

cookie_support = urllib2.HTTPCookieProcessor(cookielib.LWPCookieJar())
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)

h = urllib2.urlopen(main_page)

#正则
html = h.read()
LtRe = re.compile(b'name=\"lt\" value=\"(.*)\"')
Lt = re.findall(LtRe, html)
Lt = Lt[0]
executionRe = re.compile(b'name=\"execution\" value=\"(.*)\"')
exeRe = re.findall(executionRe, html)
exeRe = exeRe[0]


#构造header,一般header至少要包含一下两项。这两项是从抓到的包里分析得出的。
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0',
           'Referer': 'https://passport.csdn.net/account/login'}

postData = {
             '_eventId': 'submit',
             'execution': exeRe,
             'lt': Lt,
             'password': password,
             'username': username
}

#需要给Post数据编码
postData = urllib.urlencode(postData).encode('utf-8')

#通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程
request = urllib2.Request(login_url, postData, headers)

response = urllib2.urlopen(request)
text = response.read()
print text




def rate(n=None):
    select_post = None
    n = n or 1
    while n <= max_page:
        url = 'http://download.csdn.net/my/downloads/%s' % n
        print url
        h = urllib2.urlopen(url)

        html = h.read()

        linkRe = re.compile(b'<a href=\"(/detail/.*)\" class=\"btn-comment\">立即评价,通过可返分</a>')
        link = re.findall(linkRe, html)
        print link
        if link:
            select_post = link[0]
            break
        else:
            n += 1
            continue

    if select_post is None:
        return 0

    print select_post
    dhosturl = 'http://download.csdn.net' + select_post
    # for x in link:
    print dhosturl

    detailPage = urllib2.urlopen(dhosturl)

    detailPage = detailPage.read()
    sourceidRe = re.compile(b'<div class=\"recommand download_comment panel-body\" sourceid=\"(\d+?)\">')
    sourceid = re.findall(sourceidRe, detailPage)[0]
    print sourceid

    con = ['有些用,推荐下载', '无论如何,谢谢分享', '不太好,反正对我无用', '一般般了,无论如何,谢谢分享']
    #conmap = {4: '有些用,推荐下载', 4:'无论如何,谢谢分享', 2:'不太好,反正对我无用', 3:'一般般了,无论如何,谢谢分享'}
    content = con[random.randint(0, len(con)-1)]
    print content
    postData = {
                 'jsonpcallback' : 'jsonp%s' % (int(time.time())*1000),
                 'sourceid' : sourceid,
                 'content' : content,
                 'rating' : '3',
                 't' : int(time.time())*1000
    }
    postData = 'http://download.csdn.net/index.php/comment/post_comment?' + urllib.urlencode(postData)
    print postData

    h = urllib2.urlopen(postData)
    html = h.read()
    print html
    return n

#main
n = None
while True:
    try:
        n = rate(n)
        if n == 0:
            exit('结束了, 没有需要评论的')
    except Exception, e:
        print e

    #需要间隔60分钟评论一次
    time.sleep(70)


你可能感兴趣的:(csdn下载资源评论)