lxml - 根据父类获取子属性
问题描述:
我试图从类foo的td标签的第一个孩子中提取hrefs。一个例子DOM是:lxml - 根据父类获取子属性
<td class="foo">
<a href="www.foobar1.com"></a>
</td>
<td class="foo">
<a href="www.foobar2.com"></a>
</td>
从这个我想获得["www.foobar1.com", "www.foobar2.com"]
到目前为止,我有以下几点:
import requests
from lxml import html
def get_hrefs(url):
page = requests.get(url)
tree = html.fromstring(page.text)
td_elements = tree.xpath('//td[@class="foo"]')
return [el.find("a").attrib["href"] for el in td_elements]
不过,我觉得它会更有效延长xpath代替迭代,但不知道如何构建它。
谢谢。
答
是的,你可以通过从a
标签得到@href
每个td
里面把它简化:
return tree.xpath('//td[@class="foo"]/a/@href')
这是否仅返回第一个孩子每个TD?我问,因为我得到更多的href的,那么有这个类的TD。 – 2014-11-01 18:47:13
dom_tree.xpath('// td [@ class =“link”]/a [1] // @ href')似乎为这种情况做了诀窍! – 2014-11-01 18:54:59