<注:CSDN博客在美國訪問特別卡,因此轉移到cnblogs來發文章>javascript
本實驗在Ubuntu14.04上完成。使用的瀏覽器是火狐(Firefox 33.0),python版本是2.7.6。html
你們都知道用urllib配合正則表達式抓取靜態HTML的內容很方便,可是若是網頁中有javascript動態生成的內容,urllib就無能爲力了。java
此時咱們要藉助一個額外的工具:selenium。它的工做原理是操縱(火狐)瀏覽器瀏覽目標網頁,等待網頁中的javascript所有執行完畢後再對HTML源碼進行操做。整個過程就好像是人工操做瀏覽器轉到目標網址查看源代碼同樣。python
從selenium的官網下載selenium-server-standalone-2.44.0.jar。爲了你們方便我已經傳到了網盤上。下載後設置一下文件的權限:git
$ chmod 664 selenium-server-standalone-2.44.0.jar正則表達式
而後,安裝python的selenium工具包:api
$ pip install -U selenium瀏覽器
準備工做就緒了,下面開始測試一下這套系統。首先運行起selenium的server:工具
$ sudo java -jar selenium-server-standalone-2.44.0.jar 測試
注意,整個命令會在輸出了幾行信息後就不動了。這不是卡死,而是server已經作好準備,等待python腳本的調用。因此這個窗口就不要動了。
開個新窗口執行python腳本:
$ python skk.py
skk.py的內容以下:
1 #!/usr/bin/python 2 from selenium import selenium 3 4 def selenium_init(browser,url,para): 5 sel = selenium('localhost', 4444, browser, url) 6 sel.start() 7 sel.open(para) 8 sel.set_timeout(60000) 9 sel.window_focus() 10 #sel.window_maximize() 11 return sel 12 13 if __name__ =="__main__" : 14 browser='*firefox' 15 html='' 16 sel1=selenium_init(browser,'http://music.baidu.com','/top') 17 try: 18 html=sel1.get_html_source() 19 finally: 20 sel1.stop() 21 print html
在腳本執行的過程當中,火狐瀏覽器會彈出來跳動一番,就好像人工操做瀏覽器看網頁同樣。不要理它,最後瀏覽器窗口會自動關掉。
腳本最終打印出http://music.baidu.com/top的HTML源碼,存在字符串變量html中。讀者能夠繼續用正則表達式從「html」中獲取數據。
關於selenium的python接口的更多用法,能夠參考官方文檔:http://selenium.googlecode.com/git/docs/api/py/api.html