在XPath

时间:2016-09-20 13:54:38

标签: html python-2.7 xpath

我有一个HTML文档,里面装满了这样的标签:

<meta itemprop="name" content="Apple Crisp IV" />
<meta itemprop="mainEntityOfPage" content="True" />

我需要提取itemprop作为键,将内容作为值。

编辑:我没有必然拥有元标记,我需要一些不依赖于元素类型的东西。

我正在使用python来完成它,并且我将解析所有HTML主体。

我试过了:

for item in response.xpath('//@itemprop'):
        data  = item.xpath('[@content]')
        print data

'item'获取所有itemprop元素。 “数据”部分不起作用。

如何仅在已找到的itemprop元素中找到content属性?

我已经找到了答案,但所有人似乎只想找到一个元素,一个特定的元素,如下:

 ("//@*[name()='itemprop' or name()='content']")

这根本不起作用。

1 个答案:

答案 0 :(得分:1)

获取特定于上下文的@itemprop@content

In [1]: {elm.xpath("@itemprop").extract_first(): elm.xpath("@content").extract_first() for elm in response.xpath("//meta[@itemprop and @content]")}
Out[1]: {u'mainEntityOfPage': u'True', u'name': u'Apple Crisp IV'}

//meta[@itemprop and @content]会过滤同时具有metaitemprop属性的content元素。