2013-01-24 33 views
3

我想抓取一個網頁有多個頁面,當頁面號碼被點擊時,它是動態加載的。如何屏幕抓取?如何抓取頁面導航涉及動態加載的網站

即作爲URL不存在爲href或如何爬行到其他頁面?

如果有人幫助我,這將是非常有益的。

PS:當點擊不同的頁面時,URL保持不變。

回答

0

您可以在JavaScript代碼而不是HTML中查找想要的數據。這通常是一種痛苦,但你可以用正則表達式來做有趣的事情。

或者,像splinter這樣的瀏覽器測試庫的某些工作方式是在抓取之前將頁面加載到實際的瀏覽器中,如firefox或chrome。如果您在安裝了瀏覽器的計算機上運行此功能,則其中一項可行。

1

如果你使用谷歌瀏覽器,您可以檢查哪些是動態調用在這樣基礎上,開發者工具

network->headers,你可以識別其是否爲GETPOST請求的URL。

如果是GET請求,您可以直接從url找到參數。

如果是POST請求,您可以從form data中找到參數network->headers 的開發者工具。

+0

沒有獲取參數使用url保持不變。我假設已經使用了Ajax技術 – Dhatri

+0

如果可能,你可以粘貼你試圖抓取的url嗎? – shanks

+0

:其www.samsung.com/in/consumer/mobile-phone/mobile-phone/smartphont – Dhatri

0

你不能這樣做,很容易,因爲它是一個Ajax分頁(即使與mechanize)。相反,打開頁面的源文件並嘗試瞭解用於ajax分頁的url請求是什麼。然後,你可以創建一個假的請求回來,並按自己的方式處理返回的數據

+0

硒硒庫可以幫助我嗎? – Dhatri

+0

我從來沒有玩過硒之前:(你應該試試它然後 –

2

你也應該考慮Ghost.py,因爲它允許你運行任意的javascript命令,填寫表單並快速抓取快照。

0

如果你不介意使用gevent。 GRobot是另一個不錯的選擇。

+0

歡迎來到Stackoverflow!一般來說,我們喜歡站點上的答案能夠站在自己的 - 鏈接是偉大的,但如果該鏈接打破答案應該有足夠的信息仍然有幫助,請考慮編輯您的答案以包含更多詳細信息。有關更多信息,請參閱[常見問題](http://www.stackoverflow.com/faq)。 – slm