這是一個關於Web 2.0之後的perl web scrapers的古老問題;他們無法解析動態加載的頁面,因爲它們需要某種JavaScript引擎才能呈現頁面。與簡單渲染JavaScript相比,這個問題更爲複雜,因爲Perl也必須能夠管理和維護DOM。Perl:解析AJAX加載的內容
看起來WWW::Selenium和WWW::Mechanize::Firefox能夠通過利用FireFox(或其他瀏覽器)爲其進行渲染來實現此目的。然而,V8已經變得如此流行(正如Node.js所見),所以我很好奇是否有任何新庫可以利用它,或者從那時起就是獨立於瀏覽器的解決方案,我不知道。
我可能通常認爲這是一個可關閉的問題,但是當谷歌搜索和堆棧溢出時,結果如此之少,不應該有太多的解決方案(如果有的話)。
相關(舊的)問題:
- How can I use Perl to grab text from a web page that is dynamically generated with JavaScript?
- How can I handle Javascript in a Perl web crawler?
我有點糊塗了......做你是指「獨立於瀏覽器的解決方案?」如果您要抓取網頁,則頁面中必然存在差異,具體取決於您使用哪種瀏覽器呈現它,無論是Firefox還是PhantomJS等無頭瀏覽器。你的意思是你想要一個不需要你安裝Firefox的解決方案? – ThisSuitIsBlackNot
@ThisSuitIsBlackNot yes;從技術上講Mechanize是一個瀏覽器。我試圖得到的是能夠呈現JS操作的結果,而不使用第三方瀏覽器或安裝其他瀏覽器二進制文件。 – vol7ron
換句話說,你想要一個純Perl的Javascript引擎?也許嘗試[Javascript.pm](https://metacpan.org/pod/JavaScript),雖然這不是一個瀏覽器;我認爲你將不得不將自己與Mechanize整合在一起。我能找到的其他東西都需要外部二進制文件:例如,WWW :: Mechanize :: PhantomJS需要安裝PhantomJS; [JavaScript :: V8](https://metacpan.org/pod/JavaScript::V8),也不是瀏覽器,需要你安裝V8。 – ThisSuitIsBlackNot