自动网络爬虫

时间:2012-07-19 21:10:34

标签: json web-crawler

我正在编写一个需要从许多网站获取数据的抓取工具。问题是每个网站都有不同的结构。如何轻松编写从(许多)不同网站下载(正确)数据的爬虫?如果网站的结构发生变化,我是否需要重写抓取工具,还是有其他方法?

可以使用哪些逻辑和实现的工具来提高自动网络爬虫挖掘的数据质量(许多网站涉及不同的结构)?

谢谢!

4 个答案:

答案 0 :(得分:0)

我认为您想以某种方式查询它,在这种情况下,您应该将数据存储在灵活的数据存储中。关系数据库不适合用途,因为它具有严格的模式,但类似于mongodb,它允许您存储半结构化数据,而无需预先定义模式,但仍提供强大的查询语言。

您在履带代码中表示数据的方式也是如此。不要将数据映射到预先定义结构的类,而是使用可在运行时更改的灵活数据结构。如果您使用的是Java,则将数据反序列化为HashMaps。在其他语言中,这可能被称为字典或哈希。

答案 1 :(得分:0)

如果您正在从实际上希望允许您这样做的网站上抓取数据,那么他们可能会提供某种网络服务,以允许您以结构化的方式查询其数据。

否则,你是独立的,甚至可能违反了他们的使用条款。

答案 2 :(得分:0)

如果网站没有提供API,那么你就冷了,你必须为你遇到的每种数据格式编写单独的提取模块。如果网站更改格式,则必须更新格式模块。标准的做法是为每个要抓取的网站设置插件,并建立一个测试框架,使用您已经收集的数据进行回归测试。如果测试失败,您就会知道出现了问题,您可以调查是否需要更新格式插件或是否存在其他问题。

在不知道您正在收集何种数据的情况下,很难尝试假设提高挖掘数据“质量”的方法。

答案 3 :(得分:0)

也许您可以了解该网站是否允许您访问API等数据,如果是这样,您可以直接将这种结构化数据用于您的网站。如果没有,您可能需要插件。或者您可以转向其他具有API访问权限的网络抓取工具,例如Octoparse,以找到访问其API到您自己的网络抓取工具的方式。