• 使用python来刷csdn下载积分(一)


    csdn的有些资源还是很不错的,但是有的时候需要的积分比价多。

    可以免积分下载的有一个著名的工具,鬼哥csdn下载,网址:http://csdn.juming.com/

    鬼哥的原理好像是做新手任务,然后获得积分去下载。到后面的时候好像还是需要积分才能下载。

    还好csdn有一个规则,就是每评价一个资源,可以获得一个下载的积分。但是,资源多的时候就懒得去评价了,于是顺手写了个小脚本。

    本次使用的是一个叫做splinter的库(http://splinter.readthedocs.org/en/latest/),splinter是对selenium的封装,selenium就是大名鼎鼎的自动化测试库(http://www.seleniumhq.org/)。

    原理:

      利用浏览器的驱动,打开一个浏览器,模拟人的操作。splinter带的默认的driver是火狐的,chrome driver下载地址:https://code.google.com/p/selenium/wiki/ChromeDriver.

     1 #coding=utf-8
     2 import os,time
     3 import random
     4 from splinter import Browser
     5 print "10 hour after"
     6 time.sleep(60*60*10)
     7 #随机评论
     8 commentsList = [u"不错的资源!!!!!!!",u"谢谢楼主分享!",u"还不错,谢谢",u"还没看,先下载",u"感谢分享,nice",u"很好的东西,非常不错",u"用这个很方便!!",u"这个很不错!"]
     9 # print random.choice(commentsList)
    10 browser = Browser('chrome')
    11 # Visit URL
    12 url = "http://passport.csdn.net/account/login"
    13 browser.visit(url)
    14 # browser.fill('f', 'splinter - python acceptance testing for web applications')
    15 # Find and click the 'search' button
    16 btnEmail = browser.find_by_id('username')
    17 btnPasswd = browser.find_by_id('password')
    18 
    19 btnEmail.fill('')#用户名
    20 btnPasswd.fill('')#密码
    21 #print dir(browser)
    22 # Interact with elements
    23 btnSubmit = browser.find_by_value("登 录")
    24 btnSubmit.click()#登录
    25 # button.click()
    26 time.sleep(6)
    27 browser.visit("http://download.csdn.net/my/downloads")
    28 
    29 while browser.is_element_not_present_by_css(".pageliststy"):
    30     time.sleep(2)
    31 
    32 urls = [ url['href'] for url in  browser.find_link_by_text("立即评价,通过可返分")]
    33 
    34 #总页面个数
    35 pages = int(browser.find_by_css(".pageliststy")[-1]['href'].split('/')[-1])
    36 for index in range(341,pages+1):
    37     browser.visit("http://download.csdn.net/my/downloads/%d"%index)
    38     time.sleep(5)
    39     urls = urls + [ url['href'] for url in  browser.find_link_by_text("立即评价,通过可返分")]
    40     for url in urls:
    41         print url
    42         try:
    43             browser.visit(url)
    44             while browser.is_element_not_present_by_value("5"):
    45                 time.sleep(0.1)
    46             startControl = browser.find_by_css(".star-rating")[-1]# -1 for 5 stars  -2 for 4 stars  1 for one star  also may  random
    47             textControl = browser.find_by_id("cc_body")[0]#评论框
    48             btnComment = browser.find_by_value("发表评论")[0]#提交框
    49             #print dir(startControl)
    50             print "loaded"
    51             startControl.mouse_over()#鼠标到评分栏
    52             startControl.click()    #鼠标点击
    53             textControl.fill(random.choice(commentsList))#填写评论
    54             btnComment.click()#评论提交
    55             alert = browser.get_alert()#处理 js的alert确认
    56             alert.accept()#确定
    57             time.sleep(60)#评论间隔要有一分钟
    58         except:
    59             print "error"
    60     time.sleep(4)
    61     urls = []
    62 print "Hello Kitty"

    splinter可以执行js代码,通过css或者xss路径找到需要的元素,然后进行模拟的操作。

  • 相关阅读:
    实现移动端1像素线--stylus
    用户信息认证session和token
    深入了解new的过程,和call,apply,bind的区别
    微信公众号开发过程--踏坑指南
    Better-scroll巨坑!!!
    JS ES6中Arguments和Parameters的区别
    知识点1
    面试--随笔1
    pytts3语音合成遇到的中文问题
    需求,需要谁参与进来?
  • 原文地址:https://www.cnblogs.com/pasion-forever/p/4330088.html
Copyright © 2020-2023  润新知