在目标抓取工具/解析器的高级设计过程中。该应用程序将用于从特定网站提取数据。此外,该应用程序被设计为在主/从进程中运行,其中主/服务器端处理要解析的数据包,然后允许系统中的子节点(客户端服务器)获取该批数据包。解析。 (在解析过程中使用Xpath来为解析站点的每个页面提取数据。)
我在这里发帖,因为我想知道有效的实现,以确保应用程序提取的数据是正确的。我正在考虑实现一个流程,我在目标网站上至少进行两次运行,如果结果不同,请执行第3次运行,然后使用两次运行匹配,通过错误,如果应用获得不同的结果所有3次运行...
然而,这实际上是效率低下的,并且严重限制了带宽/处理......
我认为我需要进行多次运行的原因是因为基础数据/网站每天都会发生变化..但我希望能够尽快“停止”后续运行,如果应用程序可以确定页面上的基础数据没有改变..
所以..我基本上都在询问是否有人指向任何类型的文档/文章/想法/等等..如何解决这个问题。我认为有人/应用程序谁我解决了这个问题。 IE,一个像Simplyhired /确实需要抓取底层工作网站的网站,并确保你得到的数据是正确的,已经解决了这种事情......
希望这一切都有意义! (我有更多,但试图在这里保持简短..)
由于
汤姆
答案 0 :(得分:1)
我没有看到为同一站点进行多次运行的重点。
TCP / IP保证正确传输数据。如果出现错误,您将从TCP / IP堆栈中收到错误。然后重试是有道理的。如果服务器发送了错误的数据,就没有真正的希望只需要调用它3次就可以改善这种情况。
大多数网站也可能是动态的。因此,几乎不可能两次获得完全相同的结果。
答案 1 :(得分:0)
第一步是依赖HTTP缓存头。这告诉你页面是否已经发生了变化。
并非所有网站都缓存友好,但很多都是。
一旦过去,你就好运了,因为你需要解析页面只是为了获取数据以查看它是否已被更改。您可以在此时跳过任何后期处理,但您仍然必须使用提取和解析阶段,这可能是最昂贵的部分。
答案 2 :(得分:0)
为什么要构建另一个爬虫?有很多非常好的实现已经解决了如何:
您可以将您的软件与这些现有的抓取工具集成,并感到高兴。或者,如果你想做更多的工作,你可以将它们嵌入你的应用程序(可能比它看起来更难,伟大的爬虫是非常复杂的野兽。)
其中一些是: