2012-10-30 69 views
0

我們使用的Html敏捷包湊了基於HTML的網站的數據;有沒有像Html Agility Pack這樣的DLL來刮取基於Flash的網站?如何刮基於Flash的網站?

+2

據我所知,Flash網站是無法破解的。 – That1Guy

回答

0

如何捕捉整個頁面的圖像和網頁上運行的OCR讀取數據

1

你不會有與HTML敏捷性包多少運氣。一種方法是使用類似於FiddlerCore的代理來向/從Flash站點代理HTTP請求。您將啓動FiddlerCore代理,然後使用類似於C#WebBrowser的內容來轉到您想要搜索的URL。在頁面加載時,所有這些HTTP請求都會被代理,您可以檢查它們的內容。但是,由於在Flash中通常是靜態的,因此不會獲得大多數文本。相反,你會得到通常單獨存儲的大部分較大的內容(視頻,音頻和圖像)。與更傳統的抓取/抓取相比,這將會放慢,因爲您實際上必須在瀏覽器中執行/運行頁面。

如果你熟悉所有的YouTube下載類型擴展名的,他們在這同樣的原理工作,除了它們攔截,直接從Firefox的HTTP請求(例如),而不是一個單獨的代理。

我相信Google和一些大的搜索引擎與Adobe/Flash有特殊的安排,並且提供了一些軟件,可以讓他們的搜索引擎抓取工具看到更多的Google依賴的文本和東西。 PDF內容也一樣。我不知道這個軟件是否公開。

0

刮Flash內容會相當複雜,並聲稱做任何部件的可靠性,從而爲問題的最好。但是,如果您希望在某些網頁上「抓取」或按照Flash動畫中的超鏈接進行操作,則可能與Infant有一些好運。 Infant是一個免費的Java庫,用於網絡爬行,並提供有限/盡力而爲的Flash內容超鏈接。嬰兒不是開源的,但可以免費用於個人和商業用途。無需註冊!

+0

可以使用嬰兒,但我認爲他們正在尋找c#實現! – slm

1

這真的取決於你試圖放棄在網站上。有兩種類型的在這方面的網站:

  • 如果網站有swf文件裏面的數據,那麼你就必須要反編譯的swf文件,並讀取裏面的數據。有了足夠的工作,你可以通過編程來完成。但是,如果是這種情況,手動收集數據可能會更容易,因爲它可能不會有太大變化。

  • 但如果大多數情況下,特別是與有大量的數據的網站,Flash文件實際上是聯繫外部API。在這種情況下,您可以完全忽略閃存並直接訪問API。如果你不確定,只需激活Firebug的網絡面板,然後開始瀏覽。如果它使用外部API,它應該變得明顯。
    一旦找到了API,你很可能逆向工程如何操縱它來給你所需要的任何數據。

還要注意的是,如果它是一個足夠大的場地,也有可能非閃光方式來獲得相同的數據:

  • 它可能有一個移動網站(無閃光燈) - 嘗試用iPhone用戶代理訪問該網站。
  • 它可能有一個用於抓取工具的網站(如googlebot) - 請嘗試使用googlebot用戶代理訪問該網站。

編輯: 如果你在談論爬行(爬手段從任何隨機的網站獲取數據)而不是刮(從特定網站獲取結構化的數據),那麼有沒有什麼可以做,甚至Googlebot沒有報廢Flash內容。主要是因爲不像HTML,Flash沒有標準化的語法,你可以立即告訴什麼是文本,什麼是鏈接等......