网络爬虫和网络抓取有什么区别?

103

爬虫和网络抓取有区别吗?

如果有区别,那么收集网页数据以供后续在定制搜索引擎中使用的最佳方法是什么?


14
抓取(Scraping)意味着从页面中提取内容。爬取(Crawling)则是通过跟随链接来访问多个页面。爬虫必须进行抓取,有两个原因:其一,有用的爬虫不会无目的地遍历页面;它们会收集信息(例如,索引单词以构建搜索引擎的搜索索引)。其二,它们必须发现指向其他页面的链接。 - Kaz
6个回答

132

爬取 (Crawling) 通常是指像 Google、Yahoo、MSN 等搜索引擎一样,搜寻任何信息。而抓取 (Scraping) 则专门针对特定网站,获取特定数据,例如价格比较等,因此编码方式也不同。

通常抓取程序将根据其需要抓取的网站进行定制,并且会执行某些良好的爬取程序不会执行的操作,例如:

  • 无视 robots.txt 文件
  • 将自身标识为浏览器
  • 提交带有数据的表单
  • 执行 JavaScript(如果需要模拟用户行为)

1
@Ben 你知道我在哪里可以找到更多关于网络爬虫如何将自己标识为浏览器的信息吗?维基百科说“实现低级别的超文本传输协议(HTTP)”,但我想真正了解它是如何工作的。 - Honinbo Shusaku
2
@Abdul 在 HTTP 请求中,您可以指定一个 "User-Agent" 属性来标识自己。例如,如果您将其设置为 "Mozilla/5.0 ... Chrome" 或类似 Chrome 使用的内容,您的爬虫将看起来像是一个浏览器对待服务器。 - Amani Kilumanga

72

是的,它们不同。实际上,你可能需要同时使用两者。

(我必须插一句话,因为迄今为止,其他答案没有到达其本质。他们使用例子,但没有清晰地区分。当然,它们来自2010年!)

网页抓取,用最简定义来说,是处理网页文档并从中提取信息的过程。您可以在不进行网页爬行的情况下进行网页抓取。

网页爬行,用最简定义来说,是从一组种子URL开始迭代地查找和获取网页链接的过程。严格来说,要进行网页爬行,您必须进行一定程度的网页抓取(以提取URL。)

澄清其他答案中提到的一些概念:

  • robots.txt旨在适用于访问网页的任何自动化进程。因此,它适用于爬虫和抓取器。

  • “正确”的爬虫和抓取器都应准确识别自己。

一些参考资料:


8
据我所知,网络爬虫是谷歌所做的,它会浏览一个网站上的链接,并构建该站点及其链接站点的布局数据库。
而网络抓取是指对网页进行编程分析,以加载其中的某些数据。例如,在加载BBC天气预报并从中提取(抓取)天气预报后,将其放置在其他位置或在另一个程序中使用。

3
这两个概念存在着根本的区别。如果您想深入了解,我建议您阅读这篇文章:Web scraper, Web Crawler
这篇文章详细地介绍了它们之间的区别。但是您也可以通过下面这张图来获取一个简明的概括:chart showing difference between scraping and crawling

4
请注意,仅链接答案被认为不鼓励使用,SO答案应该是寻找解决方案的终点(而不是另一个参考站点,这些站点随时间变得陈旧)。请考虑在此处添加独立的摘要,将链接作为参考。 - kleopatra
嘿 @Mohit,链接坏了...有其他来源吗? - konzo

1
这两者确实有所不同。一个是指访问网站,另一个是指提取信息。

1
你可以尝试并提供更多信息,这肯定会有帮助的。 - NREZ

0
我们爬取网站以获得广泛的视角,了解网站的结构,页面之间的连接,估计我们需要访问所有感兴趣的页面所需的时间。抓取通常更难实现,但它是数据提取的本质。让我们将抓取视为用一张有一些矩形切割的纸覆盖网站。现在我们只能看到我们需要的东西,完全忽略了对于所有页面都是共同的(如导航、页脚、广告)或作为注释或面包屑的外来信息的网站部分。
关于爬行和抓取之间的区别,您可以在这里找到更多信息:https://tarantoola.io/web-scraping-vs-web-crawling/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接