簡體   English   中英

如何抓取網站,客戶端或服務器端?

[英]How to Scrape websites, client side or server side?

我正在創建一個書簽按鈕,當用戶在瀏覽器中單擊該按鈕時,它將抓取當前頁面並從該頁面獲取一些值,例如價格,項目名稱和項目圖像。

這些字段將是可變的,例如,對於每個域“ amazon,ebay”,獲取這些值的邏輯將有所不同。

我的問題是:

  • 我應該使用javascript抓取這些數據然后發送到服務器嗎?
  • 還是只是將URL發送到我的服務器端,然后使用.net代碼抓取值?
  • 什么是最好的方法? 為什么更好呢? 優點缺點?

觀看此視頻,您將了解我想確切執行的操作http://www.vimeo.com/1626505

如果要從另一個站點中提取信息以在您的站點中使用(例如,用ASP.NET編寫),則通常會在服務器端執行此操作,以便擁有豐富的語言來處理結果(例如C#)。 您將通過.NET中的WebRequest對象來執行此操作。

客戶端處理的主要用途是使用Javascript提取信息以在您的站點上顯示。 例如,天氣頻道提供的腳本可以在您的站點上顯示一個小的天氣框,也可以用於非常簡單的操作,例如將頁面添加到收藏夾。

更新 :Amr寫道,他正在嘗試重新創建某些流行的屏幕抓取軟件的功能,而這需要進行相當復雜的處理。 Amr,我考慮創建一個使用IE瀏覽器對象顯示網頁的應用程序-這非常簡單。 然后,您可以拉InnerHTML(我想,自從我實現了基於IE對象的程序以來已經有幾年了)來檢索頁面的內容並發揮作用。 當然,您可以使用WebRequest對象(只是將其傳遞給瀏覽器對象中使用的URL),但這並不是很有效,因為它將第二次下載頁面。

這是你所追求的嗎?

如果您只想使用JavaScript來執行此操作,則除非您知道將在其上使用它的每個站點的確切布局(即使那樣大),否則您都有一個相當大的書簽。

我看到的一種常見方法是在您自己的服務器上使用Web服務,您的書簽(使用JavaScript)將重定向到該Web服務以及一些參數,例如您正在查看的頁面的URL。 然后,您的服務器將抓取頁面,並為您感興趣的內容解析HTML。

一個很好的例子是“導入到Mendeley”書簽,該書簽將您正在訪問的頁面的URL傳遞到其服務器,然后在服務器中提取有關頁面上列出的科學論文的信息,並將其導入您的收藏中。

我會在服務器端抓取它,因為(我是Java專家)我更喜歡靜態語言而不是動態腳本語言,因此在后端維護邏輯對我來說更舒服。 另一方面,取決於要刮取的項目數以及此邏輯的復雜程度。 也許可以使用JavaScript中的單個id選擇器來解析這些值,然后服務器端處理可能會過大。

書簽是按定義在客戶端的,但是您可以讓客戶端依賴服務器,但是您的示例沒有提供足夠的信息。 您要如何處理已抓取的信息?

如果您在手冊中包含抓取代碼,則在您包含新功能或錯誤修復時,用戶將必須更新其書簽。 在服務器端進行操作,您的所有用戶都會立即獲得新內容:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM