Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 自动网络爬虫_Json_Web Crawler - Fatal编程技术网

Json 自动网络爬虫

Json 自动网络爬虫,json,web-crawler,Json,Web Crawler,我正在写一个爬虫,它需要从许多网站获取数据。问题是每个网站都有不同的结构。如何轻松编写一个从(许多)不同网站下载(正确)数据的爬虫程序?如果一个网站的结构将改变,我需要重写爬虫,还是有其他方法 哪些逻辑和实现的工具可用于提高自动网络爬虫挖掘的数据质量(许多网站涉及不同的结构) 谢谢大家! 我假设您希望以某种方式查询它,在这种情况下,您应该将数据存储在灵活的数据存储中。关系数据库不适合这种用途,因为它有一个严格的模式,但它允许您存储半结构化数据,而无需预先定义模式,但仍然提供了一种强大的查询语言

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

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


谢谢大家!

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


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

如果你从网站上抓取数据,而这些网站实际上想让你这样做,那么他们很可能会提供某种Web服务,让你以结构化的方式查询他们的数据


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

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


如果不知道您正在收集什么样的数据,就很难对提高所挖掘数据“质量”的方法进行假设。

也许您可以了解网站是否允许您访问API等数据,如果允许,您可以直接将这种结构化数据用于网站。如果没有,你可能需要插件。或者,您可以求助于其他具有API访问权限的网络爬虫,比如,找到将其API访问到您自己的网络爬虫的方法