簡體   English   中英

使用python抓取javascript生成的html

[英]scrape html generated by javascript with python

我需要用python抓取網站。 我使用urlib模塊獲取了源html代碼,但我還需要抓取由javascript函數(包含在html源代碼中)生成的html代碼。 該功能在站點中的作用是,當您按下按鈕時,它將輸出一些html代碼。 如何使用python代碼“按”此按鈕? 可以幫助我嗎? 我用firebug捕獲了POST請求,但是當我嘗試在url上傳遞它時,出現403錯誤。 有什么建議么?

在Python中,我認為Selenium 1.0是必經之路。 它是一個庫,可讓您從選擇的語言中控制真正的Web瀏覽器。

您需要在運行腳本的計算機上安裝有問題的Web瀏覽器,但這似乎是通過編程方式查詢使用大量JavaScript的網站的最可靠方法。

由於此處沒有全面的答案,因此我繼續寫一個。

要抓取JS呈現的頁面,我們需要一個具有JavaScript引擎的瀏覽器(例如,支持JavaScript呈現)

諸如Mechanizeurl2lib之類的選項將不起作用,因為它們支持JavaScript。

因此,這是您的工作:

設置PhantomJS以與Selenium一起運行。 在為它們都安裝依賴項之后(請參閱參考資料 ),您可以使用以下代碼作為示例來獲取完整呈現的網站。

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get('http://jokes.cc.com/')
soupFromJokesCC = BeautifulSoup(driver.page_source) #page_source fetches page after rendering is complete
driver.save_screenshot('screen.png') # save a screenshot to disk

driver.quit()

我之前(在.NET中)必須這樣做,您基本上將必須托管一個瀏覽器,讓它單擊按鈕,然后查詢瀏覽器的DOM(文檔對象模型)以獲取生成的HTML 。

這絕對是Web應用程序朝着Ajax / Javascript方法生成HTML客戶端的缺點之一。

我使用的是webkit,它是Chrome和Safari背后的瀏覽器渲染器。 通過QtPython綁定到webkit 這是執行JavaScript並提取最終HTML的完整示例

對於Scrapy (偉大的python抓取框架),有scrapyjs :一個額外的下載器處理程序/中間件處理程序,能夠抓取javascript生成的內容。

它基於pygtk,python-webkit和python-jswebkit的webkit引擎,非常簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM