xpath 嵌套 ul 列表

xpath nested ul list

我在这里用头撞墙,这可能是我遗漏的一些简单的东西。

我有一个 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 元素(包括嵌套元素)中获取文本?

感谢您的帮助!

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

尝试使用简单的 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  ']