2015-10-05 75 views
0

這是一個關於Web 2.0之後的perl web scrapers的古老問題;他們無法解析動態加載的頁面,因爲它們需要某種JavaScript引擎才能呈現頁面。與簡單渲染JavaScript相比,這個問題更爲複雜,因爲Perl也必須能夠管理和維護DOM。Perl:解析AJAX加載的內容

看起來WWW::SeleniumWWW::Mechanize::Firefox能夠通過利用FireFox(或其他瀏覽器)爲其進行渲染來實現此目的。然而,V8已經變得如此流行(正如Node.js所見),所以我很好奇是否有任何新庫可以利用它,或者從那時起就是獨立於瀏覽器的解決方案,我不知道。

我可能通常認爲這是一個可關閉的問題,但是當谷歌搜索和堆棧溢出時,結果如此之少,不應該有太多的解決方案(如果有的話)。


相關(舊的)問題:

+0

我有點糊塗了......做你是指「獨立於瀏覽器的解決方案?」如果您要抓取網頁,則頁面中必然存在差異,具體取決於您使用哪種瀏覽器呈現它,無論是Firefox還是PhantomJS等無頭瀏覽器。你的意思是你想要一個不需要你安裝Firefox的解決方案? – ThisSuitIsBlackNot

+0

@ThisSuitIsBlackNot yes;從技術上講Mechanize是一個瀏覽器。我試圖得到的是能夠呈現JS操作的結果,而不使用第三方瀏覽器或安裝其他瀏覽器二進制文件。 – vol7ron

+0

換句話說,你想要一個純Perl的Javascript引擎?也許嘗試[Javascript.pm](https://metacpan.org/pod/JavaScript),雖然這不是一個瀏覽器;我認爲你將不得不將自己與Mechanize整合在一起。我能找到的其他東西都需要外部二進制文件:例如,WWW :: Mechanize :: PhantomJS需要安裝PhantomJS; [JavaScript :: V8](https://metacpan.org/pod/JavaScript::V8),也不是瀏覽器,需要你安裝V8。 – ThisSuitIsBlackNot

回答

0

你提到硒但後來的版本Selenium::Remote::Driver與硒2.0集線器工作。

我看你也可以使用它沒有一個硒樞紐 沒有獨立服務器(我沒有使用過這部分)

由於v0.25的,它可以使用這個模塊沒有一個獨立的 服務器 - 也就是說,您不需要JRE或JDK來運行您的Selenium測試。有關詳細信息,請參閱Selenium :: Chrome,Selenium :: PhantomJS和 Selenium :: Firefox。如果您還想要其他瀏覽器 ,請在Github上給我們一個提示。

PhantomJS可能會感興趣,因爲它是一個無頭的瀏覽器

這可能不是一個答案,但它是太長了評論

+0

這可能很有趣。還有一個機械化的插件:http://search.cpan.org/~corion/WWW-Mechanize-PhantomJS-0.02/lib/WWW/Mechanize/PhantomJS/Examples.pm雖然,它似乎像使用Firefox作爲無頭髮將是完成同樣的事情。我想我真的不能避免第三方渲染器,機械化似乎沒有更多的本地(希望將有一個WWW :: Mechanize :: V8) – vol7ron

+0

@ vol7ron FWIW,我不認爲WWW: :機械化:: PhantomJS與WWW :: Mechanize :: Firefox一樣受到支持。近一年前,我提交了一個[bug報告和補丁](https://rt.cpan.org/Public/Bug/Display.html?id=100191),但沒有任何迴應。對於那個特定的項目,我最終只使用了PhantomJS而不是Perl,但我想我也可以使用我的補丁版本的模塊。我同意,一個純Perl的Javascript感知瀏覽器會很好。 – ThisSuitIsBlackNot