设为首页 收藏本站
查看: 843|回复: 0

[经验分享] 使用python来刷csdn下载积分(二)

[复制链接]

尚未签到

发表于 2015-12-2 13:43:45 | 显示全部楼层 |阅读模式
  使用python来刷csdn下载积分(一)中我们实现了csdn下载的自动评价,但是这样只是评价自己下载过的资源,还不能实现刷分的目的。本次,我们将学习批量下载csdn的免费资源。
  csdn自己是带了资源的搜素工具的,网址: http://download.csdn.net/advanced_search, 里面是可以搜索指定资源积分的下载资源的。但是用起来非常不好用,总是搜索不到想要的资源。
  于是我们就弃之不用,使用百度来搜索,搜索的关键字是 "资源积分:0分"  联通下载 pdf  site:download.csdn.net"
  这样能得到一大堆的免费资源
DSC0000.jpg
  下一步就是解析出每个资源对应的url 去访问并下载。
  代码如下:



1 #coding=utf-8
2 import os,time
3 from splinter import Browser
4 from timeout import timeout
5
6
7 def login(username="wojiaoqsc@gmail.com",passwd="dengdengdeng"):
8     """登录csdn"""
9     global browser
10     url = "http://passport.csdn.net/account/login"
11     browser.visit(url)
12     # browser.fill('f', 'splinter - python acceptance testing for web applications')
13     # Find and click the 'search' button
14     btnEmail = browser.find_by_id('username')
15     btnPasswd = browser.find_by_id('password')
16     btnRemember = browser.find_by_name('rememberMe')
17
18
19     btnEmail.fill(username)#用户名
20     btnPasswd.fill(passwd)#密码
21     btnRemember.check()#
22     #print dir(browser)
23     # Interact with elements
24     btnSubmit = browser.find_by_value("登 录")
25     btnSubmit.click()#登录
26     time.sleep(7)
27     # button.click()
28
29 @timeout(30)
30 def download():
31     global browser
32
33     print "try to clcik"
34     btnDownload = browser.find_by_css(r'#wrap > div.bd.clearfix > div.article > div.information.mb-bg.clearfix > div.info > a.btn.btn-primary.btn-lg.WCDMA.btndownload')[0]
35     btnDownload.click()
36     time.sleep(4)
37     btnDownload = browser.find_by_css(r'#download_btn2')[0]
38     btnDownload.click()
39     # btnDownload = browser.find_by_xpath(r'//*[@id="download_btn2"]')[0]
40     # btnDownload.click()  
41     time.sleep(3)
42     # btnConfirm = browser.find_by_xpath(r'//*[@id="user_score_btn"]')[0]
43     # btnConfirm.click()
44     # print "done"
45
46         # try:
47     btnConfirm = browser.find_by_xpath(r'//*[@id="user_score_btn"]')[0]
48     btnConfirm.click()
49             # time.sleep(3)
50             # print "done"
51         # except:
52             # print "error"  
53
54 def searchFree():
55     """用百度搜索免费的资源,返回资源的列表"""
56     global browser
57     url = "http://www.baidu.com"
58     browser.visit(url)
59     btnKeyWord = browser.find_by_id('kw')[0]
60     btnKeyWord.fill(u'"资源积分:0分"  联通下载 pdf  site:download.csdn.net')#密码
61     btnSubmit = browser.find_by_id("su")[0]
62     btnSubmit.click()#提交搜素
63
64     base = 0
65     time.sleep(4)   
66     for page in range(1,90):        
67         # timerThread = closeWindow(browser)
68         # timerThread.start()
69         print base," base"
70         print page," page"
71         for x in range(base+1,base+11):
72             print x
73             time.sleep(4)
74             urlTmp = browser.find_by_xpath('//*[@id="%d"]/h3/a'%x)[0]            
75             urlTmp.click()
76             browser.windows.current = browser.windows[1]
77             browser.driver.set_window_size(800,1000)
78             time.sleep(6)
79             download()
80             print "time out error"
81             browser.windows.current = browser.windows[0]
82             browser.windows.current.close_others() #关闭窗口            
83         base = base + 10   
84         nextPage = browser.find_link_by_text(u"下一页>")[0]
85         nextPage.click()
86
87
88 if __name__ == "__main__":
89     browser = Browser('chrome')#
90     login()
91     searchFree()
92     print "Hello Kitty"
  代码未经过整理,有些乱。
  中间遇到的主要问题就是元素的加载。
  有的时候由于网络状况的不同,元素的加载时间也不一样。所以中间会有很多sleep。而且csdn还使用了谷歌的网站统计功能,有的时候网页加载时间就更加的长。网页中的js脚本有的时候不能执行,因为js脚本的执行顺序是比网页的加载顺序靠后的。
  还有完善的空间,最后看下刷分的成果。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146370-1-1.html 上篇帖子: 螺旋数字的python实现 下篇帖子: Python中type构造函数参数说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表