2010-04-24 20 views
2

我需要編寫一個Perl腳本來抓取一個網站。該網站只能用JavaScript進行抓取,而用戶則在Windows上。我該如何使用Perl來抓取一個能夠通過JavaScript顯示其內容的網站?

我的工作機器上有Win32::IE::Mechanize,有IE6,但後來我搬到了我的上網本,IE8,甚至無法獲取簡單的頁面。

是Win32 :: IE ::機械化與最新版本的IE?

但是,更重要的是,鑑於最近的WinXP機器,什麼是最快,最簡單的方法來刮一個網站,只通過JavaScript揭示其內容?

+1

也許Michael Schwern在測試環境中對Selenium的討論將引起你的興趣:http://use.perl.org/~schwern/journal/39088。 – FMc 2010-04-24 12:21:12

回答

0

看一看Win32::Watir。這是一個較新的模塊,並明確支持IE 6,7和8.

+0

它看起來不錯。但我甚至無法讓它運行。它在new()上失敗並給我一個錯誤消息。 「在C:\ Perl \ site \ lib \ Win32 \ Watir.pm第101行哈希賦值中的奇數元素無法通過C:\ Perl \ site \ lib \ Win32中的包」visble「找到對象方法」_startIE「 \ Watir.pm 108行「有什麼建議嗎? – AmbroseChapel 2010-04-25 00:46:33

+0

哦,等等,這是文件 - 它說Watir ::新的,當它應該說Watir->新 - 它現在工作。雖然這並沒有使我充滿信心...... – AmbroseChapel 2010-04-25 01:26:03

+0

我希望你提交了一個你找到的doc bug的補丁。 http://rt.cpan.org :) – 2010-04-25 15:00:53

0

我沒有看到任何提及的WWW::Mechanize,所以我會爲了完整性而提出來。 Selenium也變得非常流行,可以在很多測試場景中使用。

+0

WWW :: Mechanize不做JavaScript,這就是爲什麼我在這裏問這個問題。 – AmbroseChapel 2010-04-24 23:02:26

+0

@AmbroseChapel:'WWW :: Mechanize :: Firefox'不支持JavaScript。 – Zaid 2010-04-25 02:41:34

3

WWW::Selenium

  • 它允許您指定要使用的瀏覽器(IE和Firefox是從一開始就支持)
  • 它支持獲得通過的XPath元素,表ID,文本元素(正則表達式匹配!)和網址
  • 它提供用戶交互選項的瑞士軍刀,讓您的靈活性在你希望如何來模擬最終用戶的瀏覽

你需要下載Selenium Remote Control,並將它在後臺運行爲模塊工作。

如果您的頁面加載時間不可預測,這可能不是一個好的選擇。

+0

這當然看起來不錯,但RC部分的安裝不會對我的地理位置偏遠,有點無知的客戶有任何樂趣... – AmbroseChapel 2010-04-25 00:48:44

+0

@AmbroseChapel:它不是一個安裝,而是一個下載。一旦文件到位,在後臺通過'java -jar selenium-server.jar'運行它。 – Zaid 2010-04-25 02:42:36

相關問題