標籤:
使用python來刷csdn下載積分(一)中我們實現了csdn下載的自動評價,但是這樣只是評價自己下載過的資源,還不能實現刷分的目的。本次,我們將學習批量下載csdn的免費資源。
csdn自己是帶了資源的搜素工具的,網址: http://download.csdn.net/advanced_search, 裡面是可以搜尋指定資源積分的下載資源的。但是用起來非常不好用,總是搜尋不到想要的資源。
於是我們就棄之不用,使用百度來搜尋,搜尋的關鍵字是 "資源積分:0分" 聯通下載 pdf site:download.csdn.net"
這樣能得到一大堆的免費資源
下一步就是解析出每個資源對應的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="[email protected]",passwd="dengdengdeng"): 8 """登入csdn""" 9 global browser10 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‘ button14 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 elements24 btnSubmit = browser.find_by_value("登 錄")25 btnSubmit.click()#登入26 time.sleep(7)27 # button.click()28 29 @timeout(30)30 def download():31 global browser32 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 browser57 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 = 065 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 x73 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還使用了Google的網站統計功能,有的時候網頁載入時間就更加的長。網頁中的js指令碼有的時候不能執行,因為js指令碼的執行順序是比網頁的載入順序靠後的。
還有完善的空間,最後看下刷分的成果。
使用python來刷csdn下載積分(二)