【问题标题】:can a crawler be written entirely in javascript?爬虫可以完全用javascript编写吗?
【发布时间】:2010-04-18 05:10:50
【问题描述】:

我想知道 - 爬虫可以完全用 javascript 编写吗?这样,只有在用户需要信息并且一切都在个人用户的计算机上运行时才会调用爬虫。

如果爬虫是在服务器端编写的 - 那不是也有 IP 被阻止的风险吗?

【问题讨论】:

    标签: javascript web-crawler


    【解决方案1】:

    首先,在谈论细节之前,您必须了解爬行非常缓慢。如果您正在查看一个站点,则获得任何类型的有意义的网络索引需要几分钟,如果您正在查看多个来源(通常是几周、几个月或几年),则至少需要几天时间。通过实时抓取提供搜索服务根本不可行。

    至于细节,没有什么能阻止人们用 Javascript 编写爬虫。但是,不是在浏览器嵌入的 javascript 中,至少由于跨域策略而没有服务器端代理。

    【讨论】:

      【解决方案2】:

      可以使用 javascript 编写爬虫,例如使用 Node.JS。但是,您可能无法在用户的浏览器中编写一个。这是因为:

      • 浏览器安全模型将 javascript 限制为只能访问您自己的域,因此您只能为自己的网站编制索引。
      • 每个用户每次都需要重新抓取您的整个网站,这意味着需要花费大量时间(几分钟、几小时甚至几天,具体取决于网站的大小)才能回答用户的查询,以及大量的带宽使用,因为这会在您的整个用户群中成倍增加。更不用说用户的浏览器可能不允许您的 JS 为其索引提供足够的存储空间。

      【讨论】:

        【解决方案3】:

        有一些方法可以处理跨域问题。搜索“Access-Control-Allow-Origin”,你会看到如何。

        实现这种爬虫的最简单方法是编写插件(firefox)或扩展(chrome),然后将您的javascript代码注入访问的页面。这样,您将看到与文档作者看到的完全相同的内容。您可以简单地调用 document,body.innerText,然后将内容发布到您的服务器进行索引。

        我自己有这样一个爬虫工作,有几个浏览器在不同的 ip 地址上爬取。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-28
          • 2015-06-19
          • 2011-06-07
          相关资源
          最近更新 更多