网络爬虫:Data Scraping vs Data Crawling

Crawling是在处理大数据时利用crawler自动获取最深层的信息,而Data Scraping是从任何资源处检索信息(并不一定是web)

以下是一些区别

  1. Scraping数据不需要依靠网站,而是可以通过本机、数据库或网页上的“save as”链接获取信息。而网络爬虫中的crawling则代表只能通过在网页上爬取数据。
  2. 有些时候相同的网页内容显示在不同的网址中,因此数据去重(data deduplication)是crawling中比较智能的一个功能。而data scraping中则不需要。
  3. crawling中最难的一件事是如何做好连续性爬取的协调关系。我们的spider在爬取时要足够有礼貌,以避免目的服务器不堪其扰而踢出spider。
  4. 最后不同的crawler之间可能有冲突,但这种情况不会出现在data scraping上。
Data ScrapingData Crawling
从多种资源中获取数据从网页中下载信息
任何规模的数据绝大情况下是大数据
不需要去重去重是必要的部分
需要爬取和解析parser只需要爬取

网络爬取的一些知识

网络爬虫是一种程序,可以自动浏览网络,它们搜寻网页上的关键字、内容和链接。这些爬虫可以有不同的名字,如bot,automatic indexer,和robot。一旦你键入一个搜索请求,这些爬虫扫描所有的包含这些词的相关网页,并返回一个巨大的索引库。比如如果你正在用Google搜索引擎,爬虫将通过服务器中索引出的结果访问指定的页面,然后取出存到Google的服务器中。网络爬虫也会顺着网站中的超链接去访问其他的网站。所以当你向搜索引擎询问“软件开发课程”时,将返回所有符合条件的页面。网络爬虫被配置成可以管理这些网页,以便生成的数据又快又新。

当爬虫访问一个网站时,它们会搜索其他值得访问的网站。它们可以链接到新的网站,标记出和现有网站的变化和标记不通的链接。

Google内部的搜索机制是什么?

Google显示全球有超过60万亿的网页。网站所有者可以决定他们的网页可以通过何种方式被索引,也可以拒绝被索引。索引的规则建立在网页内容的质量和其他因素的排序上。Google的算法会将搜索结果更好的展现出来,并为更高效的搜索提供一些特性,比如:拼写修正、即时性搜索建议、自动补全、同义词等。这些爬虫为提供准确的结果起到了重要的作用。但也需要网站所有者提供更准确、高质量易于检索的内容。谷歌检索规则删除的200种信息。

什么是数据挖掘

数据挖掘是一门强大的技术,可以从数据库中提取出预测性的信息,为公司寻找信息节省时间。数据挖掘提供了很多的工具,可以根据用户之前的行为来预测将来的趋势,帮助企业进行知识驱动、前瞻性的决策。数据挖掘工具帮助最大限度的缩短过去花费在分析大量数据上的时间,同时还会通过特定的方式搜索容易被遗漏的信息。不适合人类手工做的事,数据挖掘可以完成。

当网络爬虫从不同网站中爬取出大量的资料后,这些数据仍是非结构化的,如JSON、CSV或XML格式。数据挖掘即是从这些数据中得到有用的信息。所以你可以说网络爬取是数据挖掘处理的第一步。

大数据和移动化的力量帮助企业提高利润。企业越来越重视管理数据挖掘并遵循分析实践。医药、保险、商业等领域都有很多这样的例子。

图像挖掘——一种数据挖掘的应用

从图像中提取出数据,如比对相同颜色、尺寸或价格。Google Takeout可以帮助用户提取信息。这对于想要提取信息却又不想泄露自己隐私、数据的用户来说是最佳的选择。利用Google Takeout,数据挖掘工作不需要将所有的图片存储在另外的硬盘中。

微博网站Tumblr是另一个图像挖掘的例子。这里有大量的多媒体文件可以随时被提取出。

图像挖掘的出现证明了这样一个事实:社交过程发生了巨大的变化,内容已经缩小到单纯的字幕,“视觉语法”的出现已经风靡社交媒体。

数据提取

网络爬取和数据挖掘之后就是数据提取了。数据提取对于在线购物非常有用。有一些带有数据源的网站有很好的结构,如Amazon,但也有一些仍然是非结构化的并深藏在网站里。想要从这些网站中提取数据,在搜索盒和过滤器中的请求需要细化,这些结果被安置在HTML中。只有一种特殊的爬虫可以解析HTML并提取出数据,包括产品名称、定价、变化、评价、反馈、产品编码等。

用Apache Nutch进行网络爬取

Apache Nutch是一个开源网络爬虫。数据可以通过另一个Apache工具Hadoop连接在一起。可以通过这里下载。可以通过Apache Solr存储大量的数据。

看一下Nutch的主要构件,Elasticsearch提取信息是如何工作的。

  • 指令给到Nutch。所有种子文件的URL被injector收集并存储给CrawlBase。CrawBase记录完整的URL以及它们的结果状态
  • 接下来Generator保存URL信息在Segments字典里。
  • Fetcher收集Crawlist上URL的内容,存储在Segments字典中
  • Parser分割各个网站的内容到设计好的处理器中
  • 最后Elasticsearch接管并为内容索引。

一些不错的爬虫

  • Scrapy。Python的爬虫包。如果执行一些中等规模的爬虫工作,Scrapy是个不错的选择。有个特点是你可以插入一个新的函数却不影响它的核心。
  • Storm-crawler。对于低延迟可扩展网络爬虫来说是最佳选择。这也是一个开源程序,可扩展性强,在Apache Storm上运行。Storm-crawler比Nutch好的优点是它为每一个用户的配置单独提取URL,而Nutch是分批处理。反过来Nutch的优点是前者有现成的包而后者不是。
  • Elasticsearch River Web。这个插件是Elasticsearch的一个爬虫应用。它可以用CSS请求来爬取并提取内容。

留下评论