2

我正在抓取一个原子提要(xml)。其中一个标签说:

<content type="html">
&lt;p&gt Some text and stuff &lt;/p&gt
</content>

我还看到 img 和标签的相同 html 实体。是否有一个通用的 xpath 可以像这样找到 img 标签或 p 标签:

//content/p  or //content/img/@src

但显然这不适用于这些 html 实体。或者也许是其他带有scrapy的解决方案?

4

1 回答 1

3

我认为您需要提取content文本元素,并为每个元素使用解析 HTML 内容lxml.html

import lxml.etree
import lxml.html

xmlfeed = lxml.etree.fromstring(xmlfeedstring)
for content in xmlfeed.xpath('//content[@type="html"]/text()'):

    htmlcontent = lxml.html.fragment_fromstring(content)
    paragraphs = htmlcontent.xpath('//p')
    image_urls = htmlcontent.xpath('//img/@src')

请参阅 从 lxml 文档解析 HTML 片段。

于 2013-10-01T16:29:31.537 回答