我是这个领域的新手,我需要更多信息。我在互联网上找不到任何信息。例如,现在我使用此函数hxs.select('//div[@id="CategoryBreadcrumb"]//text()').extract()
。在div
ul
中,我li
和a
个li
个li
只有一个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}}
答案 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。