利用Selenium制作python數據抓取,以及對Selenium資源介紹


當當當~第三篇博客開始啦~

  這次的話題是數據抓取。終於到了核心部分的探討,我的心情也是非常激動啊!如果大家baidu或者google(如果可以的話)數據抓取或者data crawling,將會找到數以千計的例子。但是大多數的代碼非常的冗長,並且許多代碼還是抓取靜態數據之后,對動態JS寫成的數據卻毫無辦法。或者,利用HTML解析網址后,再找到JS寫的數據頁面來尋找到所想要的數據。  

  但是!不知各位是否有發現過,如果打開chrome或者safari或者各種瀏覽器的審查元素。網頁上能看到的數據,其實都會載到里面。可當轉移到源代碼的時候,JS寫成的數據卻都消失了!可我們為什么要從源代碼中找數據,卻不直接從審查元素中找呢?帶着這個問題,我歷經千險,穿越了各種國外的社區論壇以及插件包,終於找到了答案。

  首先介紹今天的主角!

  既然是interpreter,Selenium是可以按照我第一篇博客的做法下載的。PhantomJS呢,可以直接通過我給的鏈接里面進行下載。當兩個都安裝完畢,就能正式地開始進行數據抓取了。當然例子就是我的博客啦~

  首先上范例代碼

#-*-coding:utf-8-*-#
from
selenium import webdriver def crawling_webdriver(): #get local session of PhantomJS driver = webdriver.PhantomJS(executable_path='/Users/***/phantomjs/bin/phantomjs', port=65000) driver.set_window_size(1024, 768) #optional driver.get("http://www.cnblogs.com/Jerrold-Gao/") # Load page #start crawling data data=driver.find_element_by_id("sidebar_scorerank").text
  #print to check my result print(data)
  #quit the driver driver.quit() if __name__ == '__main__': crawling_webdriver()

  

  是否有被python精簡的語言驚嘆到呢?這就是python插件功能包的強大之處。

  我需要提醒幾個注意點:一、PhantomJS的路徑和端口是一定要尋找的。在國內某篇文章中不知為何去掉了路徑和端口,神奇的是,居然程序還能運行。我試了幾回,都無法像它一樣運行。二、請務必在最后quit driver,不然對內存的占用是會越來越大的。

  這樣的代碼就可以對本頁面的數據進行抓取了,結果是:

 

  可是,如果是想抓取超級鏈接呢?通過以上的代碼,依樣畫葫蘆,仍然是找不出來的。這里有個簡單的技巧:

#crawling a link
    data=driver.find_element_by_id("homepage1_HomePageDays_DaysList_ctl00_DayList_TitleUrl_0")
    url=data.get_attribute("href")

  將id屬下的區塊,提取出href的部分,就能找到鏈接了。這里找到的是:

=================================這里是另起主題的分割線===================================

 

  關於Selenium,無論是國內還是國外,都算火過一陣子了。比起openpyxl,它在主頁上的注釋也清晰很多。這里介紹幾個我覺得比較好用的資源。

  由於它官網莫名掉線,所以首當其沖的資源就是python-Selenium站了,上面有很多對代碼的注解,十分實用。

  其次,對國內的同學來說,最好的網站便是中文站了,雖然人數不是很多,但是討論還是挺豐富的。

  最后,便是萬能的stackoverflow啦,國內上這個站速度總是有點慢,其實還是很怨念的。

 

=================================我是來返場的分割線======================================

 

本日吐槽:有次和友人逛博物館。朋友說,博物館其實好奸詐,一大面雪白的牆掛一幅畫,你看到畫后也不會立刻有比較對象,就會覺得“這好有藝術感啊”的奇妙感覺。我回答說,就和西歐的料理一樣嘛,一個大白盤擺一小疊食物,感覺就會很精致的。朋友深表贊同地說,對啊,這么大的留白,擺什么都好看。我低頭輕輕笑了一下,說,什么時候把我的代碼也掛上去。

 

          在家隨便做的法式甜酒鴨胸肉(Magret de Canard)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM