2012-01-13 153 views
0

轉述原題:動態刮解析

我知道一個良好的數額PHP,JS,CSS,OOP和使用vim編輯器的NETRW和elinks插件下載一系列的最近磨練我的正則表達式技巧網頁(大約一百萬行)被解析並準備上傳到我的網站。我使用的是linux/ubuntu系統,本地主機設置,這個特定的項目正在實現Concrete5 cms - 這是用PHP編寫的。

看到抓取和解析信息的好處,我想讓我的網站動態執行此功能,儘管規模小得多;例如,使我的新用戶能夠將他們的個人信息從另一個網站轉移到我的網站中 - 這通常會處於安全連接(儘管不總是)和密碼之下。

問題:什麼是最好的工具(腳本語言)用於此?我不知道Perl或Ruby,但我相信其中任何一個都是不錯的選擇。我也聽說AWK和SED。我確信一旦我開始學習這門語言,我就可以弄清楚如何去做。我真的很感謝一些經驗豐富的投入,在哪些語言是最好的開始投入我的時間來學習它。

感謝您的幫助。

+1

描述太模糊,難以理解你想要達到什麼目標,其系統是否涉及,數據從哪裏到哪裏。你忽略瞭解釋Netra和netrw。 - 無需使用編輯器就可以自動進行網站搜索/解析,事實上,Perl和Ruby在這項任務中表現突出。 [堆棧溢出是爲了特定問題](http://stackoverflow.com/faq#questions),把你的問題分解成小塊。 – daxim 2012-01-13 16:03:28

+0

爲什麼你用vim代替一些腳本語言?或者直接使用'elinks',然後用'sed'解析輸出?雖然vim可能有可能,但有更好的工具來做這種事情。 – 2012-01-13 16:07:06

+0

你在標籤中說「perl」。爲什麼不使用LWP和HTML :: Parser? – ZyX 2012-01-13 16:21:03

回答

2

Perl有刮,我知道兩個非常好的準備使用的工具:Web::ScraperScrappy。兩者都能夠使用CSS3和XPath選擇器來識別元素; Scrappy基於Web :: Scraper構建,並添加了集成的抓取和抓取功能,並有一個漂亮的URL匹配系統來選擇要收集更多信息的鏈接(同時Web :: Scraper使用單個文檔)。它使用已建立完善且功能強大的WWW::Mechanize庫在頁面間移動,該庫非常靈活,可靠,並且可以識別身份驗證和cookie。

如果你想進入下級自己,也有很多的好的工具的基礎上,包括前面提到的WWW ::機械化,HTML::TreeBuilderHTML::TreeBuilder::XPathHTML::TableExtractor多。

+0

感謝這個信息,@hobbs爲了提取更少量的內容,它顯示這將工作正常。在一個更大的提取過程中,我讓vim使用它的標記功能循環遍歷文檔的各個方面 - 基本上通過從文檔中的各個點對它們進行分組來構建信息,並將最終的字符串放在一起進行上傳 - 循環幾千次。它看起來不會像使用Perl(?)那樣動態地做到這一點(但我仍在閱讀。)感謝讓我開始。 – Ricalsin 2012-01-16 20:33:19

+0

WOOPS!我說話太快了(我認爲)。 @hobbs我一直在閱讀關於Perl,perlmod和你提到的模塊。我感謝你的指導。如果可能,你可以發佈一個關於如何訪問頁面的解釋,獲取DOM的xpath並將值賦給變量?只是一個初學者課程。我有問題拉動觸發器。 :) 再次感謝。 – Ricalsin 2012-01-19 21:44:41

3

我強烈建議RubyCapybara進行網頁抓取。 (請參閱水豚頁面底部的非測試相關示例)。理由:

  • 簡單,簡短的抓取語法,cookie支持,js支持。

  • Ruby有許多其他用途,友好的語法和活躍的就業市場。

  • 水豚有多個支持的驅動程序。你可以運行一個真正的瀏覽器(明顯),一個真正的瀏覽器無頭(無形),所以JavaScript網站的工作。使用相同的代碼,您可以切換驅動程序以運行不帶js(機械化)的http請求來提高速度。這可以幫助您克服許多障礙(如需要運行JS/Ajax),需要查看交互等,只需更改一行代碼即可(Capybara.current_driver =:some_driver)。

驅動程序:Capybara-WebkitCapybara-Mechanize

  • 能夠使用CS,或XPath選擇,無論你是舒服。

  • 積極的開發,以及圍繞底層技術快速發展的生態系統。