HXS过滤与scrapy - python

时间:2012-05-27 16:38:58

标签: python select filter scrapy

我是这个领域的新手,我需要更多信息。我在互联网上找不到任何信息。例如,现在我使用此函数hxs.select('//div[@id="CategoryBreadcrumb"]//text()').extract()。在div ul中,我lialili只有一个a。我需要<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> 中没有{{1}}标记的文字。如果您为hxs过滤提供任何教育链接,我将非常感激。提前致谢! 如果你无法想象我需要什么,这是一个例子。

{{1}}

2 个答案:

答案 0 :(得分: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']

答案 1 :(得分:1)

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