Skip to main content
 首页 » 编程设计

python之从元素/节点中提取 HTML

2025年05月04日6me-sa

假设有一串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)