Python lxml,匹配属性

时间:2011-12-10 18:11:27

标签: python lxml

我在lxml周围缠绕着一些麻烦。我有一些我要解析的HTML,我设法做到了,但它不是最好的方法。

我想提取value属性的值,但前提是name的值是“myInput”

<input name="myInput" value="This is what i want"/>

我设法做到这一点,但我觉得有更好的解决方案。

doc = html.fromstring(data)
tr = doc.cssselect("input")

for x in tr:
    if x.get("name") == "myInput":
        print(x.get("value"))

2 个答案:

答案 0 :(得分:3)

您可以使用XPath执行此操作:

import lxml.html as LH

content='<input name="myInput" value="This is what i want"/>'

doc=LH.fromstring(content)
for val in doc.xpath("//input[@name='myInput']/@value"):
    print(val)

产量

This is what i want

上面使用的XPath具有以下含义:

    //input                    # find all input tags
      [@name='myInput']        # such that the name attribute equals myInput
      /@value                  # return the value of the value attribute           

答案 1 :(得分:2)

您可以将xpath与lxml一起使用,这是示例:

f = StringIO(xmlString)
tree = etree.parse(f)
r = tree.xpath('/input[@name="myInput"]/@value')

请参阅此文档:http://lxml.de/xpathxslt.html

相关问题