2008-10-10 143 views
4

儘管HTML Scraping從我所能看到的很好的文檔中可以看出,並且我理解它的概念和實現,但是從隱藏在認證後面的內容中抓取的最佳方法是什麼形式。我指的是從我合法訪問的內容中獲取內容,所以我正在尋找一種自動提交登錄數據的方法。Perl:HTML從認證網站上刮掉

我所能想到的就是設置一個代理,從手動登錄中捕獲吞吐量,然後設置一個腳本來欺騙吞吐量作爲HTML抓取執行的一部分。就語言而言,它可能會在Perl中完成。

有沒有人有過這方面的經驗,或只是一個普遍的想法?

編輯 這一直是answered before但與.NET。雖然它驗證我認爲應該如何完成,但有沒有人有Perl腳本來做到這一點?

回答

4

查看Perl WWW::Mechanize庫 - 它建立在LWP上,提供用於完成您所指的那種交互的工具,並且可以在您使用Cookie時保持狀態!

WWW ::機械化,或機甲短, 方便您用 網站自動化互動。它支持執行 頁面抓取順序,包括鏈接和提交表單後的 。 解析每個提取的頁面,並提取其鏈接和表單。鏈接 或表格可以被選擇,表格字段 可以被填充並且下一頁可以被取得 。 Mech還會存儲您訪問過的網址的歷史記錄 ,可能是 查詢和重訪。

0

是的,你可以使用其他庫爲你自己的語言,如果它不是asp.net。

例如,在Java中,您可以使用httpclienthttpunit(即使處理一些基本的Javascript)。

3

perl中的LWP Module應該給你後面的東西。

有一個good article here它談到啓用cookie和其他身份驗證方法,讓您獲得授權登錄,並允許您的屏幕抓到你後面的登錄牆。

2

有兩種經常使用的身份驗證類型。基於HTTP的認證和基於表單的認證。

對於使用基於HTTP的身份驗證的站點,您基本上會將用戶名和密碼作爲您向服務器發出的每個HTTP請求的一部分發送。

對於一個基於表單的身份驗證的站點,您通常需要訪問登錄頁面,接受並存儲cookie,然後將cookie信息與所做的任何HTTP請求一起提交。

當然,也有像使用外部認證如openid或saml進行認證的站點,如stackoverflow。這些處理報廢更爲複雜。通常你想找到一個庫來處理它們。