我在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"))
答案 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')