Python3如何抓取JS動態產生的html網頁功能實現樣本

來源:互聯網
上載者:User
這篇文章主要介紹了Python3實現抓取javascript動態產生的html網頁功能,結合執行個體形式分析了Python3使用selenium庫針對javascript動態產生的HTML網頁元素進行抓取的相關操作技巧,需要的朋友可以參考下

本文執行個體講述了Python3實現抓取javascript動態產生的html網頁功能。分享給大家供大家參考,具體如下:

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

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

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

這裡要介紹一個python庫:selenium,本文使用的版本是 2.44.0

先安裝:

pip install -U selenium

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

【例0】

開啟一個Firefox瀏覽器
載入所給url地址的頁面

from selenium import webdriverbrowser = webdriver.Firefox()browser.get('http://www.baidu.com/')

【例1】

開啟一個Firefox瀏覽器
載入百度首頁
搜尋 “seleniumhq”
關閉瀏覽器

from selenium import webdriverfrom selenium.webdriver.common.keys import Keysbrowser = webdriver.Firefox()browser.get('http://www.baidu.com')assert '百度' in browser.titleelem = browser.find_element_by_name('p') # Find the search boxelem.send_keys('seleniumhq' + Keys.RETURN) # 類比按鍵browser.quit()

【例2】

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

import unittestclass BaiduTestCase(unittest.TestCase):  def setUp(self):    self.browser = webdriver.Firefox()    self.addCleanup(self.browser.quit)  def testPageTitle(self):    self.browser.get('http://www.baidu.com')    self.assertIn('百度', self.browser.title)if __name__ == '__main__':  unittest.main(verbosity=2)
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.