Xpath获取嵌套项的文本不起作用,但css确实如此

时间:2015-09-19 12:15:07

标签: xpath web-crawler scrapy octicons

我正在使用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不返回任何内容。我是否正确使用//嵌套元素?

1 个答案:

答案 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()删除所有空格,只得到数字。