2012-12-16 80 views
0

嘗試從DOM解析HTML數據時,當我使用Chrome的開發人員工具時,我可以在控制檯中看到該數據。當我在本地將頁面保存爲HTML並搜索目標數據時,無法找到它。我已經完成了一些關於靜態HTML文件是如何被瀏覽器接收的信息,以及Javascript如何呈現它們。從DOM解析HTML(非靜態HTML)

具體示例:谷歌「nba」的結果包括一個頁面頂部的表格,其中所有預定的遊戲都嵌套在<tbody>之內,如果保存該頁面,則HTML文件不包含<tbody>標籤。嘗試使用帶有Python的BeautifulSoup4解析這張遊戲表。

+1

我不認爲你可以讓Chrome以簡單的方式保存當前的DOM狀態。 IIRC Firefox可以執行此操作,並且可以使用Web檢查器通過右鍵單擊元素並將其保存到文件中來將DOM複製爲HTML。 – millimoose

+1

而不是讓BeautifulSoup4作用於一個保存的文件,你也可以使用一個工具來驅動一個真正的瀏覽器(從而支持Javascript/AJAX)進行屏幕抓取。 WATIR和Ruby的朋友,PhantomJS都是這樣工作的。 – millimoose

+2

你也可以尋找一個合適的API來直接獲取你想要的數據,而不是屏幕抓取。 – millimoose

回答

1

要完全以編程方式完成此操作,您需要run a headless browser - 執行JavaScript的東西就像您的真實瀏覽器一樣。 Ghost.py可以使這更容易。

否則,您可以執行as millimoose suggests,並使用瀏覽器的內置開發人員工具將當前DOM狀態保存爲HTML。

+0

針對完全編程,配置ghost.py,並使用以下測試代碼: 'from ghost import Ghost ghost = Ghost() page,resources = ghost.open('http://www.google.ca/ #output = search&q = nba') print page .__ dict__'但我看不到任何我需要解析的HTML內容,有什麼我失蹤的東西? – user1347648

+0

...和?它有用嗎? –

+0

也許,在使用httpresource對象時有些困難。我可以看到該詞典包含URL,標題,回覆和http_status。我猜我必須以某種方式提取答覆,並以某種方式將其轉換爲HTML數據? – user1347648