【问题标题】:how to select tables with scrapy?如何用scrapy选择表?
【发布时间】:2016-01-22 15:35:40
【问题描述】:

我正在抓取一个包含表格的页面,我可以通过这种方式提取我感兴趣的链接:

 response.xpath('//*[@id="mw-content-text"]/table[1]/tr/td[1]/a/@href').extract()

如果我这样写,现在有 3 个或更多表:

response.xpath('//*[@id="mw-content-text"]/table/tr/td[1]/a/@href').extract()

我得到了所有表的数据,但是如果我只想要 n 个表,有一种方法可以在不使用 n 表达式的情况下获取它,某事 像这样:

response.xpath('//*[@id="mw-content-text"]/table[1:n]/tr/td[1]/a/@href').extract()

?

【问题讨论】:

    标签: python xpath scrapy


    【解决方案1】:

    假设n 是一个整数,您可以在XPath 查询中使用position(),如下所示:

    '//*[@id="mw-content-text"]/table[position() <= {}]/tr/td[1]/a/@href'.format(str(n))
    

    这将根据需要从第一个n 表中选择数据。

    或者,您可以使用如下循环:

    for i in range(5):
        response.xpath('//*[@id="mw-content-text"]/table[{}]/tr/td[1]/a/@href'.format(str(i))).extract()
    

    【讨论】:

    • 太好了,我在哪里可以看到该函数的文档?
    【解决方案2】:
    '//*[@id="mw-content-text"]/table[position()<n]/tr/td[1]/a/@href'
    

    【讨论】:

      猜你喜欢
      • 2019-08-07
      • 2015-12-11
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      相关资源
      最近更新 更多