你怎么分析差HTML格式的文件?
-
22-08-2019 - |
题
我得分析一系列网页,以便进口到数据的应用程序。每个类型的网页提供了同样的数据。问题是,HTML的每一页都是不同的,所以数据的位置的不同而不同。另一个问题是HTML码不佳的格式化,使得无法使用一个类似XML parser.
迄今为止,最好的战略我可以想到的,是确定一个模板,用于各种网页,如:
模板:
<html>
...
<tr><td>Table column that is missing a td
<td> Another table column</td></tr>
<tr><td>$data_item_1$</td>
...
</html>
模板B:
<html>
...
<ul><li>Yet another poorly formatted page <li>$data_item_1$</td></tr>
...
</html>
这样,我将只需要一个单一析程序用于所有网页,会比较各页与其模板和检索 $data_item_1$
, $data_item_2$
, 等等。然而,这将是一个有很多工作。你能想到的任何简单的解决方案吗?任何库,可以帮助?
感谢
解决方案
您可以通过整齐通过页面的源得到有效的页面。你可以找到整洁这里 。整齐有很多编程语言的绑定。你这样做后,您可以使用自己喜欢的解析器/内容提取技术。
其他提示
我建议你的Html敏捷包。它与结构不佳的HTML工作,而使用XPath给你的Xml喜欢选择的能力。你仍然要模板项目或选择使用不同的选择和分析,但它可以把你过去的结构驼峰差。
如前所 在这里, 和其他所以答案之前, 美丽的汤 可以分析奇怪HTML。
美丽的汤是蟒蛇HTML/XML parser设计用于快速转变的项目,如屏幕上-刮。三个功能,使之强大的:
- 美丽的汤不会扼如果你把它糟糕的标记。它产生一个分析树,使得大约尽可能多的意义,因为你的原始文件。这通常是良好的足够收集所需的数据和逃跑。
- 美丽的汤提供了一些简单的方法和功能已大大增强成语,用于导航、搜索和修改分析树:一个工具包,为解剖的文件和提取你需要什么。你不需要创建一个自定义的分析器,每个应用程序。
- 美丽的汤自动转换收到的文件,以Unicode和发出的文件UTF-8。你不认为有关的编码,除非该文件未指定编码和美丽的汤不能自动检测的一个。然后你只需要指定原来的编码。
美丽的汤分析任何东西你给它,并且树穿越东西给你。你可以告诉它"找到所有的联系",或者"找到的所有链接的类externalLink",或者"找到的所有链接的网址比赛"foo.com",或者"找到的表格标题,得到了大胆的文本,然后给我这个文本"。
使用HTML5解析器如 html5lib 。
与HTML整齐,这会给你错误处理非常接近什么浏览器做的。
有对这个几个C#特定主题,如寻找C#HTML解析器。
根据你需要提取的正则表达式可能是一种选择什么样的数据。我知道很多人会在使用上的结构化数据,但显而易见的事实是正则表达式(如你发现),很多HTML的实际上不是结构良好,可以是非常难以解析的思想不寒而栗。
我也有类似的问题给你,但对我来说,我只想要一个具体的一条从页面这是很容易识别,而不解析HTML数据,所以一个正则表达式的工作非常好听。