xpath嵌套ul列表

时间:2018-12-07 04:46:49

标签: xpath scrapy scrapy-spider

我在这里撞墙,可能是我想念的简单东西。

我有一个HTML无序列表(ul),如下所示:

<ul>
  <li>Elm 1</li>
  <li>Elm 2 - with children
    <ul>
      <li>Nested Elm</li>
      <li>Another Elm</li>
    </ul>
  </li>
</ul>

使用xpath(与Scrapy兼容的第1版),我如何从所有li元素(包括嵌套元素)中获取文本?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果需要xpath,请使用response.xpath('//ul//li/text()').extract()。 如果可以使用CSS,它会更短:response.css('ul li::text').extract()

答案 1 :(得分:0)

尝试使用简单的xpath选择器:

from scrapy.selector import Selector
selector = Selector(text="""
<ul>
  <li>Elm 1</li>
  <li>Elm 2 - with children
    <ul>
      <li>Nested Elm</li>
      <li>Another Elm</li>
    </ul>
  </li>
</ul>""")
print(selector.xpath('//li/text()').extract())

这将输出:

['Elm 1', 'Elm 2 - with children\n    ', 'Nested Elm', 'Another Elm', '\n  ']