lxml.html解析HTML:寻找具有特定同级的所有元素

问题描述:

我有一个HTML网页,其中我已经用读入树:tree = html.fromstring(page.content)lxml.html解析HTML:寻找具有特定同级的所有元素

我已经成功地使用选择一个链接列表:

tree.xpath('//span[@class="txt"]/span[@class="pl"]/a[@class="hrdlnk"]/text()')

我也成功入选使用价格清单:

tree.xpath('//span[@class="txt"]/span[@class="l2"]/span[@class="price"]/text()') 

注意两个hrdlnk和价格都grandc hildren的span[@class="txt"]

我的问题是,我正在创建一个笛卡尔的链接X价格图。我需要它们的相关性,所以我需要确保我正在创建一组正确匹配的字典。这很简单,除了有时没有价格,这意味着我需要忽略链接。

如何选择仅有价格同级的链接并选择价格?如何将这些信息输入到字典中并添加到数组中,以确保正确地匹配一组链接和价格?

第一个问题的答案。这个xpath应该只选择那些有价格孙辈的孙辈span[@class="txt"]的链接:

tree.xpath('//span[@class="txt" and ./span[@class="l2"]/span[@class="price"]]/span[@class="pl"]/a[@class="hrdlnk"]/text()')