我正在编写一个爬虫,需要从许多网站获取数据。问题是每个网站都有不同的结构。我如何才能轻松地编写一个从(许多)不同网站下载(正确)数据的爬虫?如果网站的结构发生变化,我是否需要重写爬虫,或者是否有其他方法?
什么逻辑和实现的工具可以用来提高自动网络爬虫挖掘的数据的质量(许多网站涉及不同的结构)?
谢谢!
发布于 2012-07-20 05:22:24
我假设您想要以某种方式查询它,在这种情况下,您应该将数据存储在灵活的数据存储中。关系数据库不适合使用,因为它有严格的模式,但是像mongodb这样的数据库允许您存储半结构化数据,而不必预先定义模式,但仍然提供了强大的查询语言。
在爬虫代码中表示数据的方式也是如此。不要将数据映射到预先定义了结构的类,而是使用可以在运行时更改的灵活数据结构。如果您使用的是Java,那么将数据反序列化为HashMaps。在其他语言中,这可能称为Dictionaries或Hashes。
发布于 2012-07-20 05:29:52
如果你从网站上抓取数据,他们很可能会提供某种网络服务,让你以结构化的方式查询他们的数据。
否则,你只能靠自己,你甚至可能违反他们的使用条款。
发布于 2012-07-21 05:07:23
如果网站没有提供API,那么你就会被冷落,你必须为你遇到的每种数据格式编写单独的提取模块。如果网站改变了格式,你必须更新你的格式模块。一个标准的做法是为你正在爬行的每个网站提供插件,并有一个测试框架,它可以用你已经收集的数据进行回归测试。当测试失败时,你知道出了问题,你可以调查你是否必须更新你的格式插件,或者是否有其他问题。
如果不知道您收集的是哪种类型的数据,就很难对提高挖掘数据的“质量”的方法进行假设。
https://stackoverflow.com/questions/11569368
复制相似问题