【问题标题】:How to parse a htmlpage with lxml with <br /> screwing up?如何用 lxml 解析一个 htmlpage 并且 <br /> 搞砸了?
【发布时间】:2015-07-20 12:51:28
【问题描述】:

我想用 python 中的 lxml 解析来自 Nasa 网站的以下 html:

    <p>
        <strong>Launch Date:</strong>1981-09-24<br/>
        <strong>Launch Vehicle:</strong> Delta<br/>
        <strong>Launch Site:</strong> Cape Canaveral, United States<br/>
        <strong>Mass:</strong> 550.0 kg<br/>
    </p>

使用python3的以下代码:

from lxml.html import parse

page = parse("http://nssdc.gsfc.nasa.gov/nmc/spacecraftDisplay.do?id=1981-096A")

rows = page.xpath('//div[@class="urtwo"]/p')[0]
for element in rows:
    print(element.xpath("string()"))

但是heads后面的值是空的……:

Launch Date:

Launch Vehicle:

Launch Site:

Mass:

我认为这与或有关。

谁能帮我找到解决办法?

【问题讨论】:

    标签: python html html-parsing lxml lxml.html


    【解决方案1】:

    如何迭代strong 标签,将它们视为标签并将以下文本兄弟作为值:

    rows = page.xpath('//div[@class="urtwo"]/p//strong')
    for element in rows:
        label = element.text.strip()
        value = element.xpath("following-sibling::text()")[0].strip()
    
        print(label, value)
    

    打印:

    ('Launch Date:', u'1981-09-24')
    (u'Launch\xa0Vehicle:', u'Delta')
    (u'Launch\xa0Site:', u'Cape Canaveral, United States')
    ('Mass:', u'550.0\xa0kg')
    

    【讨论】:

    • 哇!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多