从网络爬虫中提取内容时,哪些解决方案更快

本文关键字:解决方案 爬虫 网络 提取 | 更新日期: 2023-09-27 18:11:54

我用Asp.net做了一个网络爬虫。它工作得很好。问题是当我想从中提取内容。有些内容在HTML标签之间进行包装。我有一些解决方案来提取内容,但我不知道哪一个是更好的。它应该具有良好的性能和易于实现。

  1. 使用多种模式的Regex提取内容

  2. 使用Linq to XML提取内容。

  3. 使用XPath提取内容。

谁来帮我选择更好的解决方案。我想我会使用XPath,但我不确定性能是否比RegEx或Linq2XML好。

谢谢你的建议

从网络爬虫中提取内容时,哪些解决方案更快

你的解决方案都不是特别好。

  1. HTML不是一种正则语言,因此不适合正则表达式。参见使用正则表达式解析HTML的标准响应。
  2. HTML不一定是有效的XML

相反,你应该使用HTML解析库,比如HTML Agility Pack。

都不是。使用合适的HTML解析器,如HTML Agility Pack

RegEx无疑比Linq to XML和XPath都快。但是不能使用RegEx解析html标记中的所有内容。Html对于这个目的来说太复杂了。

我没有设计自己的Crawler,我使用的是arachnode.net,它可以抓取大量的数据。无论在哪里,我都使用Html敏捷包来提取各种组件,如Html控件,cookie,元标签等。

正如其他人已经暗示的那样-使用合适的HTML解析器。在大多数情况下,HTML编写得不够好,不能被当作XML对待。更糟糕的是,HTML5推动了完全不可解析的语法。例如,HTML5允许你省略属性周围的引号。

与HTML敏捷包一起,你可以看看威严-12的HTML解析器:威严-12:Projects: c# HTML Parser (. net).