[英]Scraping websites with Javascript enabled?
我正在嘗試抓取信息並將其提交給嚴重依賴 Javascript 執行大部分操作的網站。 當我在瀏覽器中禁用 Javascript 時,該網站甚至無法運行。
我在 Google 和 SO 上搜索了一些解決方案,有人建議我應該對 Javascript 進行逆向工程,但我不知道該怎么做。
到目前為止,我一直在使用 Mechanize,它可以在不需要 Javascript 的網站上運行。
有沒有辦法通過使用 urllib2 或類似的東西來訪問使用 Javascript 的網站? 如果需要的話,我也願意學習 Javascript。
我寫了一個關於這個主題的小教程,這可能會有所幫助:
http://koaning.io.s3-website.eu-west-2.amazonaws.com/dynamic-scraping-with-python.html
基本上你所做的是讓 selenium 庫假裝它是一個 Firefox 瀏覽器,瀏覽器將等到所有 javascript 都加載完畢,然后再繼續向你傳遞 html 字符串。 一旦你有了這個字符串,你就可以用beautifulsoup解析它。
您應該考慮使用Ghost ,這是一個包含 PyQt4 + WebKit hack 的 Python 庫。
這使得g
成為 WebKit 客戶端:
import ghost
g = ghost.Ghost()
您可以使用g.open(url)
抓取頁面,然后g.content
將評估當前狀態下的文檔。
Ghost 還有其他很酷的特性,比如注入 JS 和一些表單填充方法,你可以將生成的文檔傳遞給 BeautifulSoup 等等: soup = bs4.BeautifulSoup(g.content)
。
到目前為止,Ghost 是我發現的唯一使 Python 中的這種事情變得容易的東西。 我遇到的唯一限制是您不能輕松地創建多個客戶端對象的實例ghost.Ghost
,但您可以解決這個問題。
我遇到了完全相同的問題。 這一點都不簡單,但我終於找到了一個很好的解決方案,使用PyQt4.QtWebKit
。
你會在這個網頁上找到解釋: http : //blog.motane.lu/2009/07/07/downloading-a-pages-content-with-python-and-webkit/
我已經測試過了,我目前正在使用它,這很棒!
它的一大優點是可以在服務器上運行,只使用X,沒有圖形環境。
檢查撬棍。 我沒有任何經驗,但我對你的問題的答案很好奇,所以我開始在谷歌上搜索。 我想知道這是否適合你。
http://grep.codeconsult.ch/2007/02/24/crowbar-scrape-javascript-generated-pages-via-gecko-and-rest/
也許您可以使用Selenium Webdriver ,我相信它具有 python 綁定。 我認為它主要用作測試網站的工具,但我想它也應該可用於抓取。
我實際上建議使用硒。 它主要是為了從“用戶角度”測試 Web 應用程序而設計的,但它基本上是一個“FireFox”驅動程序。我實際上已經將它用於此目的......盡管我正在抓取動態 AJAX 網頁。只要 Javascript 表單有一個可識別的“錨文本”,Selenium 可以“單擊”所有應該自己整理的內容。
希望有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.