用xml的scrapy xpath解决方案,带有type = html和html实体

时间:2013-10-01 11:08:20

标签: xpath scrapy lxml

我正在抓一个原子进给(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的其他解决方案?

1 个答案:

答案 0 :(得分:3)

我认为您需要提取content文本元素,并使用lxml.html解析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文档中的Parsing HTML fragments