网络爬虫会遇到什么危险?

时间:2014-11-08 17:26:32

标签: web-crawler

我刚刚编写了一个爬虫,并且一直试图想到为什么抓取某个网站会很糟糕的原因。我知道现代浏览器的风险主要是由于javascript。所以我的问题是,网络爬虫(用PHP或Java编写)是否可以抓取一个可能以某种方式对爬虫造成损害的网站?

1 个答案:

答案 0 :(得分:2)

这真正取决于您的网络抓取工具的功能。如果您的抓取工具只是从HTML中抓取文本,那么在大多数情况下您都可以。当然,这假设您在存储/显示数据之前清理数据。如果这就是你正在做的事情,那么我能想到的唯一真正的痛苦就是当你跟踪链接时,有人误导你是爬虫。根据您提供的用户代理,他们可以基本上将抓取工具定位并重定向到他们喜欢的任何位置。您可以编写代码来尝试防止这种情况,但显然很难完全避免。

然而,有一些陷阱可能会抓住网络爬虫。如果它在做什么并不聪明,那么spider trap可能会下降。这基本上会为您的抓取工具创建一个无限循环的网站,并且基本上是为了防止网络抓取工具抓取网站。这有时会无意中完成,这就是为什么大多数网络抓取工具都有max crawl depth设置的原因。 (Chris Jester-Young在评论中提到了这一点,并且对于跟踪用户看不到的链接有很多好处。即一个css为display: none的链接)

另一件事显然是polite。 webcrawler在网站上占用带宽和资源。

  • 对网站的资源很满意;在多次访问站点时限制爬网程序。
    • 如果某些网站尝试以高速率抓取,则会阻止您使用抓取工具。
  • 关注robots.txt和元数据,以便您只抓取网站管理员希望抓取的位置。
  • 如果网站有针对网页抓取的政策,则不要抓取网站。
    • 通常可以在robots.txt或网站的用户协议中找到。

最后但并非最不重要的是,您可能会在某些国家/地区面临一些法律处罚。因为我不是一个知识分子,所以我甚至都不打算尝试这个。因此,在让爬行者离开之前,请查阅当地的法律/法规。