我正在使用Scrapy创建一个爬虫,并想知道为什么我的CSS选择器出现时我的xpath不起作用?我想从这个html中获取提交次数:
<li class="commits">
<a data-pjax="" href="/samthomson/flot/commits/master">
<span class="octicon octicon-history"></span>
<span class="num text-emphasized">
521
</span>
commits
</a>
</li
Xpath的:
response.xpath('//li[@class="commits"]//a//span[@class="text-emphasized"]//text()').extract()
CSS:
response.css('li.commits a span.text-emphasized').css('::text').extract()
CSS返回数字(未转义),但XPath不返回任何内容。我是否正确使用//嵌套元素?
答案 0 :(得分:1)
您未对class
标记的span
属性中的所有值进行匹配,因此请使用contains
函数检查是否仅存在text-emphasized
:
response.xpath('//li[@class="commits"]//a//span[contains(@class, "text-emphasized")]//text()')[0].strip()
否则还包括num
:
response.xpath('//li[@class="commits"]//a//span[@class="num text-emphasized"]//text()')[0].strip()
另外,我使用[0]
检索XPath返回的第一个元素,并使用strip()
删除所有空格,只得到数字。