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

功能

1.自动登录csdn

2.查找未评论的资源并自动评论

用到的库

1.python自带的requests,获取以及发送网页数据

2.python自带的time,用作休眠,csdn资源一段时间内只允许评论一个资源,每评论一个资源要休息一段时间

3.BeautifulSoup,解析html文本,搜索文本中指定的标签和属性

过程

1.用chrome的开发者工具抓取登录以及评论的数据包,获取数据包格式

2.requests获取指定页面html文本

3.BeautifulSoup分析页面属性,提取评论以及登录必须的页面信息

4.对BeautifulSoup的结果进行筛选,去掉一些干扰的标签信息,并判断资源是否评论过

5.组装评论消息并post。

脚本

import requests
from BeautifulSoup import BeautifulSoup
import time

def commitfunc(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",
            }
    sess_source.post(commiturl, commitdata)

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):
            #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)

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" : "xxxxx",
            "password" : "xxxxx"
            }
    sess_source.post(url_login, data_login)

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

logincsdn()
total_page = GetPageCount()
for num in range(1,int(total_page)):
    CommitWholePage(str(num))

欢迎咨询和指正,python菜鸟一枚。

BeautifulSoup中文资料站:http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html#Iterating%20over%20a%20Tag

时间: 2024-08-08 13:07:45

python登录csdn并自动评论下载资源脚本的相关文章

利用python登录网页并自动签到

最近接触python操作网页,甚是方便.很多网站为了粘贴用户,要求每天签到送积分,而我们这么忙哪有空去干这个呀,python可以自动帮我们做这个事情. 实验网站:www.shuobar.com,这是一个提供免费电话的网站,以前在任何时候打电话都免费的,但是现在只能在中午12点之前免费,其他时间打电话要积分,每天签到可以送一些积分 实验方法:windows下pyhton编程 1.用户的登录.www.shuobar.com采用QQ授权登录,不提供帐号密码的登录方式,这给自动签到带来一些不便,首先研究

[Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

目录(?)[+] 前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时继续介绍Selenium+Python官网Locating Elements部分内容.        希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~        [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)        

Python爬虫入门教程 54-100 博客园等博客网站自动评论器

爬虫背景 爬虫最核心的问题就是解决重复操作,当一件事情可以重复的进行的时候,就可以用爬虫来解决这个问题,今天要实现的一个基本需求是完成"博客园" 博客的自动评论,其实原理是非常简单的,提炼一下需求 基本需求 登录博客园<不实现,登录单独编写博客> 调用评论接口 返回请求结果 确定流程之后,基本就是找突破口的环节了 实际的去评论一下,然后不管你用什么抓包工具都可以,只要抓取到你想要的数据,即可 评论API如下 Request URL: https://www.cnblogs.

用python编写ios工程自动编译、打包ipa等脚本

第一次使用python请先看:http://my.oschina.net/LangZiAiFer/blog/298763 代码管理我用的是Git: 工程clone如下: def gitClone(): os.system ('git clone https://[email protected]/xxx/goccia.git ~/desktop/20140804') return https://[email protected]/xxx/goccia.git是git服务器路径,不必care:~

python实现QQ机器人(自动登录,获取群消息,发送群消息)

一次偶然的机会我看见了一个群里的一个QQ号总是根据你所发的消息自动回复,当时很感觉到神奇,我知道可以模拟登录网站,没想到竟然也能模拟登录QQ,首先自己想到的就是如何实现模拟登录PC端的QQ, 开始研究了下,发现QQ所发送的包都很难理解. 于是就转到了网页版的QQ,因为在网页里可以捕获所有的请求从而更好的实现模拟功能! 首先第一步就是打开网页版的qq,打开浏览器的开发者模式 这里可以监控所有的请求! 打开登录界面的的时候 会捕捉到一个GET请求 https://ssl.ptlogin2.qq.co

python(pexpect)简单的自动ssh脚本

# vi ssh.py #!/usr/bin/python 按a或i进入编辑模式 import pexpect child=pexpect.spawn('ssh [email protected]') child.expect('password:') child.sendline('123456') child.interact() child.close() 按Esc键退出编辑模式 :wq(保存并退出) # python ssh.py 要自动退出登录在child.interact()前加ch

基于python的request库,模拟登录csdn博客

以前爬虫用urllib2来实现,也用过scrapy的爬虫框架,这次试试requests,刚开始用,用起来确实比urllib2好,封装的更好一些,使用起来简单方便很多. 安装requests库     最简便的方法就是使用pip来安装:pip install requests:如果需要安装特定版本,则在后面加上版本号即可:pip install requests == 1.9.7,这样就搞定了. 快速上手的小例子 下面说一个最简单的例子: 第一行,引入requests库,这是必然的. 第二行,通过

《新浪微博自动评论软件&#183;设计与实现之UI篇》

任务:编写用户界面 使用Python中的wxPython对界面进行编写工作 预计的按钮有:登录,评论,退出 预计的输入框有:cookie.评论内容.搜索关键字 预计的单选框有:是否使用关键字搜索 首先,看看我们需要的控件都有哪些,按钮(Button).单选按钮(RadioButton).静态文本(StaticText).可编辑文本(TextCtrl),到WxPythonInAction查看对应的文档,要注意到的是,wxPython和之前玩的MFC不一样,不是先设计界面,再编写代码,而是所有控件的

《新浪微博自动评论软件&#183;设计与实现之关键字搜索篇》

任务:进行关键字搜索,对结果批量评论 通过GET请求来获取搜索页面,其url:http://s.weibo.com/weibo/keyword&Refer=STopic_box.其中keyword为搜索关键字. 利用Python的RegEx解析网页,获取每条微博的mid. 手动对一条微博发送评论,抓取其数据包,分析其中各个参数及其作用以便在程序中对其进行更改模拟,其中包括但不限于Cookie字段以及POST参数mid.content. 利用Python编写程序模拟3中的情况重新提交POST请求,