Parsing 解析器/爬虫算法问题
在目标爬虫/解析器的高级设计过程中。该应用程序将用于从特定网站提取数据。此外,该应用程序被设计为在主/从进程中运行,主/服务器端处理要解析的数据包,然后允许系统中的子节点(客户端服务器)获取要解析的数据包批次。(在解析过程中使用Xpath来提取解析站点的每个页面的数据。) 我在这里发帖,因为我想知道如何高效地实现以确保应用程序获取的数据是正确的。我正在考虑实施一个流程,在目标站点上至少运行两次,如果结果不同,则运行第三次,然后使用两次运行匹配的结果,如果应用程序在所有3次运行中都得到不同的结果,则会出现错误 然而,这会变得非常低效,并且会严重增加带宽/处理 我认为我需要多次运行的原因是,基础数据/站点每天都会发生变化。。但我希望能够尽快“停止”后续运行,前提是应用程序能够确定页面上的基础数据没有更改 所以。。我基本上是问是否有人有指向任何类型的文档/文章/想法/等等的指针。。关于如何解决这个问题。。我认为有人/应用程序解决了这个问题。也就是说,像simplyhired/这样的网站确实解决了这类问题,在那里你需要清理底层工作网站,并确保你获得的数据是正确的 希望这一切都有意义!(我还有更多,但我尽量在这里保持简短) 谢谢Parsing 解析器/爬虫算法问题,parsing,web-crawler,Parsing,Web Crawler,在目标爬虫/解析器的高级设计过程中。该应用程序将用于从特定网站提取数据。此外,该应用程序被设计为在主/从进程中运行,主/服务器端处理要解析的数据包,然后允许系统中的子节点(客户端服务器)获取要解析的数据包批次。(在解析过程中使用Xpath来提取解析站点的每个页面的数据。) 我在这里发帖,因为我想知道如何高效地实现以确保应用程序获取的数据是正确的。我正在考虑实施一个流程,在目标站点上至少运行两次,如果结果不同,则运行第三次,然后使用两次运行匹配的结果,如果应用程序在所有3次运行中都得到不同的结果,
Tom我不认为在同一个站点上进行多次运行有什么意义 TCP/IP保证数据的正确传输。如果出现错误,您将从TCP/IP堆栈中获取错误。那么重试是有意义的。如果服务器发送了错误的数据,那么仅仅调用3次就不可能改善这种情况
此外,大多数网站可能是动态的。因此,实际上不可能两次得到完全相同的结果。第一步是依赖HTTP缓存头。这将告诉您页面是否已更改 并非所有网站都对缓存友好,但很多网站都是这样
一旦过了这一关,你就有点运气不好了,因为你需要解析页面,只是为了获取数据,看看它是否发生了变化。在这一点上,您可以跳过任何后期处理,但您仍然需要执行抓取和解析阶段,这可能是最昂贵的部分。为什么还要构建另一个爬虫程序?有很多非常好的实现已经解决了以下问题:
- 不要让服务器超载,给你一个禁令
- 根据不同的故障模式重试
- 最大化带宽
- 避免获取过程中出现无限循环
- 还有很多其他的考虑
- Heritrix,archive.org的爬虫程序:
- 电线: