假设有一串html...
<div class="content">
This is some test <b>this is bold </b> this is great list of text.
</div>
<div class="content">
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
现在我想使用 Scrapy 将这两个元素的内容抓取到一个变量中。
def parse(self, response):
hxs = HtmlXPathSelector(response)
# this returns all nested elements/nodes except text
contents = product.select('//div[@class="content"]/*').extract()
# this returns all nested text except elements/nodes
contents = product.select('//div[@class="content"]/text()').extract()
如何将两个元素/节点的整个嵌套 HTML 作为变量中的字符串获取?
请您参考如下方法:
你可以用 /node() 来完成——参见 https://stackoverflow.com/a/10899531/85461在回答类似问题时。
# Returns all child nodes - text as well as elements.
contents = product.select('//div[@class="content"]/node()').extract()
请注意,extract() 将返回一个列表,您可以按照通常的方式连接该列表以恢复 HTML:
html = "\n".join(contents)
