我正在抓取一个原子提要(xml)。其中一个标签说:
<content type="html">
<p> Some text and stuff </p>
</content>
我还看到 img 和标签的相同 html 实体。是否有一个通用的 xpath 可以像这样找到 img 标签或 p 标签:
//content/p or //content/img/@src
但显然这不适用于这些 html 实体。或者也许是其他带有scrapy的解决方案?
我认为您需要提取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 片段。