[英]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呈現)
諸如Mechanize , url2lib之類的選項將不起作用,因為它們不支持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背后的瀏覽器渲染器。 通過Qt有Python綁定到webkit 。 這是執行JavaScript並提取最終HTML的完整示例 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.