簡體   English   中英

在啟用 Javascript 的情況下抓取網站?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM