【问题标题】:Parsing on HTML some specific datas在 HTML 上解析一些特定的数据
【发布时间】:2013-10-20 17:36:19
【问题描述】:

我正在开发一个需要我解析网络上的 html 网站的小应用程序。 我的问题如下: 解析例程对于某些信息工作正常,但我正在寻找一种方法来获取一些拒绝出现的信息。

这是我愿意解析的部分代码结构:

<body>

   `<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>

只是一个结构的例子,确切地说是 url 是http://www.ourairports.com/airports/EBBR/pilot-info.html

好的,html 代码似乎没有出现在预览中,所以在上面页面的源代码中,当你看到 [div id="general"] 时,下面你有一个 [p] 后跟 [span class="label"]some text[/span] 并且在括号下方有文本。这发生在几行上,我需要捕捉这些信息。

我尝试过: //body/div/main/div[@id='general']/p as XpathQueryString 但结果是 1 个节点并且为空

还有 div[@id='general'] 但结果是没有找到节点, 用 div[@id='general']/p/span 结果是没有找到节点, 使用 //div/p/span[@class='label'] 结果是标志和 >/span> 之间的标题,但我希望检索后面引号之间的文本,但我无法弄清楚如何成功。我想我已经尝试了所有组合(除了上面解释的很多其他组合)但没有机会。是否有特殊路径可以访问此文本?

感谢您的建议。

顺便说一句,这是我在 stackoverflow.com 上的第一篇文章,我的第一语言是法语,所以对于任何未遵守的规则或我的英语不好,我提前道歉。

在键盘上享受您的白天、晚上、...夜晚。

阿兰

【问题讨论】:

    标签: html xpath xcode4


    【解决方案1】:

    您的第一个表达式//body/div/main/div[@id='general']/p 应返回单个节点,即

    。正如您所观察到的,它在所引用的网站上完全以这种方式工作。表达式向下到达该节点,但没有深入到文本嵌套的位置。然而,你也必须得到文本,只是封装在 html 中,周围有花哨的标签。正确使用的良好 XPath 选择器 API 应该返回匹配的 html 节点,包括

    标记本身。
    如果您最后看到的只是文本节点,请尝试以下操作:

    中的文本视为 html 节点,text() 节点。
    //div[@id='general']/p/text()
    这将匹配“要解析的文本”。 node() 将匹配任何 html 节点(甚至是标签之间的文本)和 * 任何非text() 节点。
    对于任意数量的步骤,请使用双斜杠:
    //div[@id='general']/p//text()
    现在您匹配

    标记下的每个文本节点,无论嵌套级别如何。而且由于文本节点根据定义是叶节点(不能包含其他节点),这可以保证您不会多次匹配同一路径的成员。

    你的一些表情:
    //body 是肤浅的,只有一个主体,html 定义了确切的位置。
    @id 量化的节点不需要为其父级选择器处理,以 //div[@id='something unique'] 开头。

    了解有关 XPath 的更多信息。正确返回选定“节点”而不只是连接文本的 API 可以在理解表达式在实践中的工作方式方面发挥重要作用。

    【讨论】:

    • 您好,感谢您的回答。由于我不知道如何直接问你关于同一主题的另一个问题,我只是回答了我自己的问题。你能看看吗?谢谢,艾尔
    猜你喜欢
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 2012-08-11
    • 2014-11-15
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多