Python3抓取javascript生成的html網頁


用urllib等抓取網頁,只能讀取網頁的靜態源文件,而抓不到由javascript生成的內容。

究其原因,是因為urllib是瞬時抓取,它不會等javascript的加載延遲,所以頁面中由javascript生成的內容,urllib讀取不到。

 

那由javascript生成的內容就真的沒有辦法讀取了嗎?非也!

本文要介紹一個python庫:selenium,目前最新版本是 2.44.0

 

先安裝:

pip install -U selenium

 

下面用三個例子來說明其用法:

【例0】

  • 打開一個Firefox瀏覽器
  • 載入所給url地址的頁面
1 from selenium import webdriver
2 
3 browser = webdriver.Firefox()
4 browser.get('http://www.baidu.com/')

 

【例1】

  • 打開一個Firefox瀏覽器
  • 載入百度主頁
  • 搜索 “seleniumhq”
  • 關閉瀏覽器
 1 from selenium import webdriver
 2 from selenium.webdriver.common.keys import Keys
 3 
 4 browser = webdriver.Firefox()
 5 
 6 browser.get('http://www.baidu.com')
 7 assert '百度' in browser.title
 8 
 9 elem = browser.find_element_by_name('p')  # Find the search box
10 elem.send_keys('seleniumhq' + Keys.RETURN)  # 模擬按鍵
11 
12 browser.quit()

 

【例2】

Selenium WebDriver 常用於網絡程序的測試。 下面是一個使用Python標准庫 unittest 的例子:

 1 import unittest
 2 
 3 class BaiduTestCase(unittest.TestCase):
 4 
 5     def setUp(self):
 6         self.browser = webdriver.Firefox()
 7         self.addCleanup(self.browser.quit)
 8 
 9     def testPageTitle(self):
10         self.browser.get('http://www.baidu.com')
11         self.assertIn('百度', self.browser.title)
12 
13 if __name__ == '__main__':
14     unittest.main(verbosity=2)

 


免責聲明!

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



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