2010-04-18 29 views
3

我想知道 - 一個爬蟲可以完全用JavaScript編寫嗎?這樣,只有當用戶需要這些信息並且所有內容都是從個人用戶的計算機運行時纔會調用該搜尋器。一個爬蟲可以完全寫在JavaScript中嗎?

如果爬網程序寫入服務器端 - 是否也會冒IP被阻塞的風險?

回答

2

有可能可以在javascript中使用例如Node.JS來編寫爬取器。但是,您可能無法在用戶的瀏覽器中編寫一個。這是因爲:

  • 瀏覽器安全模型限制JavaScript只訪問您自己的域名,因此您只能索引自己的網站。
  • 每個用戶每次都需要重新抓取您的整個網站,這意味着在用戶的查詢可以得到回答之前花了很多時間(數小時,甚至幾天,具體取決於網站的大小),以及大量的帶寬使用,因爲這是在整個用戶羣中增加的。更不用說用戶的瀏覽器可能不允許您的JS爲其索引提供足夠的存儲空間。
2

首先,在說詳細信息之前,您必須瞭解爬行非常緩慢。如果您在一個網站上查看,獲得任何有意義的網絡索引需要花費幾分鐘,如果您正在查看多個源(通常爲幾周,幾個月或幾年),至少需要幾天時間。通過爬行來提供搜索根本不可行。

至於細節,沒有什麼可以防止用JavaScript寫一個爬蟲。但是,不是在瀏覽器嵌入式JavaScript中,至少由於跨源策略而沒有服務器端代理。

2

有辦法解決跨域問題。搜索「Access-Control-Allow-Origin」,你會看到如何。

實現這種爬蟲的最簡單方法是編寫插件(firefox)或擴展(chrome),然後將JavaScript代碼插入到訪問頁面中。這樣,您將看到與文檔作者所看到的完全相同的內容。您可以簡單地調用document,body.innerText,然後將內容發佈到您的服務器以進行索引。

我自己有這樣的爬蟲工作,與幾個瀏覽器上不同的IP地址爬行。