Scrapy:html xpath选择器返回结果为html?

mir*_*lol 4 python xpath scrapy

如何检索标记中包含的所有HTML?

hxs = HtmlXPathSelector(response)
element = hxs.select('//span[@class="title"]/')
Run Code Online (Sandbox Code Playgroud)

编辑:如果我查看文档,我只看到返回新的xpathselectorlist的方法,或只返回标记内的原始文本.我想要检索不是新列表或文本,而是检索标记内的源代码HTML.例如:

hxs.select('//span[@class="title"]/html()')
Run Code Online (Sandbox Code Playgroud)

我想做一个像这样的方法XPathSelectorList,shal返回它里面的HTML,像这样:

<html>
    <head>
        <title></title>
    </head>
    <body>
        <div id="leexample">
            justtext
            <p class="ihatelookingforfeatures">
                sometext
            </p>
            <p class="yahc">
                sometext
            </p>
        </div>
        <div id="lenot">
            blabla
        </div>
    an awfuly long example for this.
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我希望我清除了围绕我的问题的模棱两可.

如何从Scrapy中的HtmlXPathSelector获取HTML?(也许解决方案外部scrapy的范围?)

xia*_*owl 5

打电话.extract()给你XpathSelectorList.它将返回包含所需HTML内容的unicode字符串列表.

hxs.select('//div[@id="leexample"]/*').extract()
Run Code Online (Sandbox Code Playgroud)

更新

# This is wrong
hxs.select('//div[@id="leexample"]/html()').extract()
Run Code Online (Sandbox Code Playgroud)

/html()不是有效的scrapy选择器.要提取所有孩子,请使用'//div[@id="leexample"]/*''//div[@id="leexample"]/node()'.注意,node()会返回textNode,结果类似:

[u'\n   ',
 u'<a href="image1.html">Name: My image 1 
' ]