我正在抓取包含表格的网页,我可以通过这种方式提取我感兴趣的链接:
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()
答案 0 :(得分:1)
假设n
是一个整数,您可以在position()
查询中使用XPath
,如下所示:
'//*[@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()
答案 1 :(得分:1)
'//*[@id="mw-content-text"]/table[position()<n]/tr/td[1]/a/@href'