2012-07-19 193 views
1

我在编写爬取器,需要从许多网站上获取数据。问题是每个网站都有不同的结构。我怎样才能轻松地编写一个抓取程序(正确)从(很多)不同的网站下载数据?如果网站的结构会发生变化,我需要重写抓取工具,还是有其他方法?自动网络爬虫

什么逻辑和实现的工具,可以用来改善数据由自动网络爬虫开采的质量(很多网站都参与了不同的结构)?

谢谢!

+0

什么是json标签? – Kiril 2012-07-20 18:49:48

回答

0

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

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

0

如果你刮从网站,其实是想,让你做到这一点的数据,没准他们会提供某种形式的Web服务的,让你查询一个结构化的方式他们的数据。

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

0

如果网站提供的API甚至没有,那么你就失去了知觉,你必须写你遇到的每个数据格式不同的提取模块。如果网站更改格式,则必须更新格式模块。一个标准的事情是为每个你正在爬行的网站提供插件,并且有一个测试框架,它可以用你已经收集的数据进行回归测试。当测试失败时,您知道出了问题,您可以调查是否需要更新格式插件或是否存在其他问题。

不知道你正在收集这将是非常困难的尝试推测大约的方法来改善这是挖掘数据的“质量”什么样的数据。

0

也许你可以发现网站是否允许你访问数据,如API,如果是的话,你可以直接使用这种结构化数据到您的网站。如果没有,你可能需要插件。或者您可以通过API访问(例如Octoparse)转向其他网络抓取工具,以便找到将API访问到您自己的网络抓取工具的方式。