对一些特定数据的HTML解析
我正在开发一个小应用程序,它要求我解析web上的html站点。 我的问题如下: 解析例程对于一些信息来说工作得很好,但我正在花几个小时寻找一种方法来获取一些拒绝出现的信息 下面是我愿意解析的部分代码结构:对一些特定数据的HTML解析,html,xpath,xcode4,Html,Xpath,Xcode4,我正在开发一个小应用程序,它要求我解析web上的html站点。 我的问题如下: 解析例程对于一些信息来说工作得很好,但我正在花几个小时寻找一种方法来获取一些拒绝出现的信息 下面是我愿意解析的部分代码结构: ` 好的,html代码似乎没有出现在预览中,因此在上面页面的源代码中,当您看到[div id=“general”]时,下面是一个[p],后面是[span class=“label”]一些文本[/span],下面是括号中的文本。这发生在几行,我需要捕捉这些信息 我曾尝试将://body/di
`
好的,html代码似乎没有出现在预览中,因此在上面页面的源代码中,当您看到[div id=“general”]时,下面是一个[p],后面是[span class=“label”]一些文本[/span],下面是括号中的文本。这发生在几行,我需要捕捉这些信息
我曾尝试将://body/div/main/div[@id='general']/p用作XpathQueryString,但结果是1个节点且为空
也使用div[@id='general'],但结果未找到节点,
对于div[@id='general']/p/span,未找到结果节点,
使用//div/p/span[@class='label']时,结果是标志和>/span>之间的标题,但我正在查找后面引号之间的文本,我无法确定如何成功。我想我已经尝试了所有的组合(比上面解释的更多),但没有机会。是否有特殊的路径来访问此文本
谢谢你的建议
顺便说一句,这是我在stackoverflow.com上的第一篇帖子,我的第一语言是法语,所以我为没有遵守任何规则或我的英语不好提前道歉
享受你的一天,晚上。。。键盘上的夜晚
Alain您的第一个表达式//body/div/main/div[@id='general']/p
应返回单个节点。正如你所观察到的,它在被引用的网站上就是这样工作的。表达式向下延伸到该节点,但不深入文本嵌套的位置。然而,你也必须得到文本,只是用html封装,周围有花哨的标签。正确使用的良好XPath选择器API应该返回匹配的html节点,包括标记本身。
如果最后看到的只是文本节点,请尝试以下操作:
将s中的文本视为html节点,text()
节点。
//div[@id='general']/p/text()
这将与“要分析的文本”匹配。
node()
将匹配任何html节点(甚至标记中的文本)和*
任何非text()
节点。
对于任意数量的步骤,请使用双斜杠:
//div[@id='general']/p//text()
现在,无论嵌套级别如何,都要匹配标记下的每个文本节点。而且,由于文本节点根据定义是叶节点(不能包含其他节点),这保证了不会多次匹配树下同一路径的成员
关于你的一些评论:
//body
是肤浅的,只有一个body,html精确地定义了其中的位置。
由@id
量化的节点不需要由其父节点的选择器继续,从//div[@id='something unique']
开始
了解有关XPath的更多信息。正确返回所选“节点”而不仅仅是连接文本的API在理解表达式在实践中的工作方式方面可以发挥重要作用。您好,谢谢您的回答。由于我不知道如何直接问你关于同一主题的另一个问题,我只是回答了我自己的问题。你能看一下吗?谢谢,艾尔
`<header>
<nav>
<div.....>
<aside......>
<main>
<div .....>
<a ......>
<a ......>
</div>
.
.
.
<div id="general">
<h2> ........</h2>
<p>
<span class="label">text</span>
"text 2 to be parsed"
<br>
<span class="label">other text</span>
"text 3 to be parsed"
<br>