3

我是这个领域的新手,我需要更多信息。我在互联网上找不到任何信息。例如现在我使用这个功能hxs.select('//div[@id="CategoryBreadcrumb"]//text()').extract()。在这方面,除了一个之外,div我都有ullis 与anchors li。我需要其中li没有a标签的文本。如果您也提供任何有关 hxs 过滤的教育链接,我将不胜感激。提前致谢!如果您无法想象我需要什么,这是一个示例。

<div id='CategoryBreadcrumb'>
<ul>
  <li><a href=#>I dont need</a></li>
  <li><a href=#>I dont need</a></li>
  <li><a href=#>I dont need</a></li>
  <li>Text that i need</li>
</ul>
</div>
4

2 回答 2

3

尝试:

hxs.select('//div[@id = "CategoryBreadcrumb"]/ul/li/text()')

要了解有关 XPath 的更多信息,请参阅w3schools了解基础知识和w3.org了解完整规范。


PS:scrapy 使用 lxml。您可以使用如下代码测试您的 XPath:

import lxml.html as LH

text = '''
<div id='CategoryBreadcrumb'>
<ul>
  <li><a href=#>I dont need</a></li>
  <li><a href=#>I dont need</a></li>
  <li><a href=#>I dont need</a></li>
  <li>Text that i need</li>
</ul>
</div>
'''

doc = LH.fromstring(text)
print(doc.xpath('//div[@id = "CategoryBreadcrumb"]/ul/li/text()'))

# ['Text that i need']
于 2012-05-27T16:58:39.483 回答
1

您还可以尝试使用以下命令来使用 scrapy shell 命令:
scrapy shell "http://yourdomain.com"
您将获得一个带有各种现成可用变量的 python shell,包括 hxs(HtmlXPathSelector)。
在那里测试你的xpath。

于 2012-05-28T03:22:24.727 回答