2011-08-16 82 views
1

我应该使用什么?XML解析器与正则表达式

我将获取链接,图像,文本等,并用它来构建seo统计和分析页面。

你推荐使用什么? XML解析器或正则表达式

我一直在使用正则表达式,从来没有任何问题,但是,我一直听到人们说,它不能做一些事情,等等等等......但说实话,我不'不知道为什么,但我害怕使用XML解析器,并喜欢正则表达式(它的工作原理和服务目的相当好)

所以,如果一切正常和正则表达式为什么我在这里问你要使用什么?那么,我认为即使迄今为止一切正常,并不意味着它将来也会出现,所以我只想知道使用正则表达式的XML解析器有什么好处?性能有没有提高,容易出错,更好的支持,其他闪耀功能等等?

如果建议使用XML解析器然后推荐一个用PHP

使用

我都肯定会想知道为什么你会选择一个比其他?

+2

有[优点和缺点](http://stackoverflow.com/questions/3650125/how-to-parse-html-with-php/3650431#3650431)。为了从各种网站中提取,使用DOM解析器而不是正则表达式提取最为简单(因此更好的选择)。虽然你没有非常具体的想要提取什么。 – mario

回答

2

如果您正在处理真实世界(X)HTML,那么您将需要HTML解析器而不是XML解析器,因为XML解析器一旦遇到格式错误就需要停止解析,这将是几乎立即与大多数HTML。

针对处理HTML的正则表达式的一点是它不可靠。对于任何正则表达式,都会有HTML页面失败。 HTML解析器与正则表达式一样易于使用,并且像浏览器一样处理HTML,所以非常可靠,并且很少有任何理由不使用它。

一个可能的例外是抽样用于统计目的。假设您将扫描100,000个网页以获得相当简单的模式,例如,某个特定属性的存在,并返回您获得的匹配网页的百分比。虽然设计良好的正则表达式可能会产生假阳性和假阴性,但它们不太可能影响总体百分比。您可能能够接受这些错误匹配,因为正则表达式扫描可能比每个页面的完整解析更快。然后,您可以通过仅在返回正则表达式匹配的页面上运行解析来减少误报数量。

要看到问题的种类,将导致困难的正则表达式看:Can you provide some examples of why it is hard to parse XML and HTML with a regex?

0

这听起来我好像你正在做的屏幕抓取。这无疑是一个有点启发式的过程 - 您正在寻找感兴趣的网页中经常出现的模式,您不可避免地会错过其中的一些模式,而且您并不介意。例如,你并不在意你对img标签的搜索也会发现一个img标签,它会被注释掉。如果这是您的应用程序的特征,那么反对使用正则表达式处理HTML或XML的通常规则可能不适用于您的案例。