利用Selenium製作python資料抓取,以及對Selenium資源介紹

來源:互聯網
上載者:User

標籤:

噹噹當~第三篇部落格開始啦~

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

  但是!不知各位是否有發現過,如果開啟chrome或者safari或者各種瀏覽器的審查元素。網頁上能看到的資料,其實都會載到裡面。可當轉移到原始碼的時候,JS寫成的資料卻都消失了!可我們為什麼要從原始碼中找資料,卻不直接從審查元素中找呢?帶著這個問題,我曆經千險,穿越了各種國外的社區論壇以及外掛程式包,終於找到了答案。

  首先介紹今天的主角!

  • interpreter:Selenium
  • app:PhantomJS

  既然是interpreter,Selenium是可以按照我第一篇部落格的做法下載的。PhantomJS呢,可以直接通過我給的連結裡面進行下載。當兩個都安裝完畢,就能正式地開始進行資料抓取了。當然例子就是我的部落格啦~

  首先上範例代碼!

#-*-coding:utf-8-*-#from selenium import webdriverdef crawling_webdriver():    #get local session of PhantomJS    driver = webdriver.PhantomJS(executable_path=‘/Users/Yirugao/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啦,國內上這個站速度總是有點慢,其實還是很怨念的。

 

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

 

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

 

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

利用Selenium製作python資料抓取,以及對Selenium資源介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.