2012-02-27 106 views
1

我一直在Python中練習我的刮屏能力。我已經非常好,但遇到了幾個讓我非常難過的網站。他們利用Ajax來查找附近的位置。有幾個網站以相同的方式設計。其中一個網站是www.applebees.com。即使使用螢火蟲,我也找不到答案。用Python刮Ajax

Python如何通過ajax調用請求位置?我完全難倒了。

該頁面是www.applebees.com,在右側有一個表單輸入郵政編碼,它將拉起距離該郵政編碼最近的位置。但是,如果在輸入此郵政編碼後拉動源,則位置仍不會顯示在源文件中。請求/響應完全是ajax,並隱藏到html源代碼中,我從來沒有見過類似的東西。我正在嘗試現在研究解決方案。

+1

Ajax是做HTTP請求的一種流行方式,Python是一種編程語言。唯一正確的答案是「使用你最喜歡的HTTP庫」。 – 2012-02-27 00:09:20

+1

你能提供一個更具體的例子嗎?例如,Applebee內的特定頁面? – 2012-02-27 00:12:33

回答

7

使用http庫以編程方式刮取某些網站可能會很困難。如果您試圖在JavaScript大型網站(ajax或其他)上模擬用戶交互,則可以考慮使用諸如硒之類的東西來驅動真實的瀏覽器。有python客戶端瀏覽,你會得到一些訪問頁面的DOM。

http://pypi.python.org/pypi/selenium

+1

我可能會添加一個鏈接到我自己的庫[dryscrape](https://github.com/niklasb/dryscrape),該鏈接使用QtWebkit使用內存(無頭)瀏覽器實例來刮掉JavaScript大量的網頁。這比Selenium和其他人都輕巧和快捷。 – 2012-02-27 00:27:23

+0

即使您提供的建議,我不明白我是如何提取位置名稱和地址,即使在手動提交郵政編碼後保存的html源文件不存在。我可以看到我的屏幕和螢火蟲的信息,但下載源時,它不在那裏。 – 2012-02-27 00:59:54

+0

經過研究,更多的硒似乎是唯一的途徑。 Niklas也是一種選擇。感謝所有的答覆 – 2012-02-27 01:30:40