爬虫程序可以完全用javascript编写吗?

爬虫程序可以完全用javascript编写吗?,javascript,web-crawler,Javascript,Web Crawler,我在想-爬虫程序可以完全用javascript编写吗?这样,只有当用户需要信息时才会调用爬虫程序,并且所有内容都是从单个用户的计算机上运行的 如果爬虫程序是在服务器端编写的,那么IP是否也有被阻止的风险?可以使用javascript编写爬虫程序,例如。但是,您可能无法在用户的浏览器中编写一个。这是因为: 浏览器安全模型将javascript限制为仅访问您自己的域,因此您只能索引您自己的站点 每个用户每次都需要重新爬网整个站点,这意味着在回答用户的查询之前,需要花费大量的时间(分钟、小时甚至几天

我在想-爬虫程序可以完全用javascript编写吗?这样,只有当用户需要信息时才会调用爬虫程序,并且所有内容都是从单个用户的计算机上运行的


如果爬虫程序是在服务器端编写的,那么IP是否也有被阻止的风险?

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

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

首先,在谈论细节之前,您必须了解爬行非常缓慢。如果你浏览一个网站,获取任何有意义的网页索引都需要几分钟;如果你浏览多个来源(通常是几周、几个月或几年),则至少需要几天。通过现场爬行进行搜索是完全不可行的


至于细节,没有什么可以阻止你用Javascript编写爬虫程序。但是,由于跨源策略,浏览器中没有嵌入javascript,至少没有服务器端代理。

有办法解决跨域问题。搜索“accesscontrolalloworigin”,您将看到如何进行

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

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