【问题标题】:XPath - Need to Parse Some HtmlXPath - 需要解析一些 Html
【发布时间】:2016-07-10 10:18:40
【问题描述】:

我的文档中有一些 Html,如下所示:

我正在使用此代码:

    Dim web As New HtmlWeb
    Dim doc As New HtmlDocument
    doc = web.Load("http://www.reedmantollchryslerdodgejeepram.com/new-inventory/index.htm?search=&saveFacetState=true&year=2017&lastFacetInteracted=inventory-listing1-facet-anchor-year-0")

    Dim label = doc.DocumentNode.SelectNodes("//*[@class='facetmulti-label  make']")

这种“某种”有效,因为我得到了这个结果(作为两个集合中的一个):

理想情况下,这次抓取的最终结果是“克莱斯勒 (35)”

我是 XPath 的新手...可以这样做吗?

编辑:

为了清楚起见(希望如此),在网页上,我试图解析这些数量(即“克莱斯勒 (35)”和“菲亚特 (3)”):

感谢您的帮助。

【问题讨论】:

    标签: html xpath web-scraping


    【解决方案1】:

    你可以使用input标签中的value属性找到html的相关部分,然后用/..获取父级:

    "//input[@value='Chrysler']/..//text()"
    

    或者使用具有属性value='Chrysler'的输入子项过滤来选择标签:

    "//label[@class='facetmulti-label  make'][input/@value='Chrysler']//text()" 
    

    或者使用contains使用标签文本来查找标签:

    "//label[@class='facetmulti-label  make' and contains(.,'Chrysler')]//text()"
    

    如果您想删除换行符等,也可以将 any 与 normalize-space 结合使用。

    "normalize-space(//input[@value='Chrysler']/..)"
    

    【讨论】:

    • 好的,但是我在 OuterHtml 字段中得到了整个字符串: - 我只是想解析出“克莱斯勒”和数字“(35)” - 是这有意义吗?
    • @PierreMFiorini,我测试了所有示例,它们都返回了文本
    • 好的 - 我看到他们工作了......谢谢!......我需要消化一下
    • 我添加了更多解释,希望 helos
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多