以下是我从第一页到最后一页的分页代码:
url = response.css("li.next a::attr(href)").extract_first()
if url:
url = response.urljoin(url)
yield response.follow(url, self.parse)
Scrapy 1.4 release notes还有另一种方式:
for a in response.css('li.page a'):
yield response.follow(a, self.parse)
我试过了:
url = response.css("li.next a")[0]
if url:
yield response.follow(url, self.parse)
但我收到错误" IndexError:列表索引超出范围"在我可以使用try处理的最后一页中,除了:
try:
url = response.css("li.next a")[0]
except IndexError:
pass
else:
yield response.follow(url, self.parse)
我问是否有更好更短的方法来解决这个问题,还是应该坚持使用旧的response.url()方式进行分页?我之所以这样问,是因为我在他们的发行说明中看到了这一点,粗体,"现在推荐的方法是在Scrapy蜘蛛中创建请求"。
答案 0 :(得分:1)
如何使用发行说明方式?
for a in response.css('li.next a'):
yield response.follow(a, self.parse)
# if more than one next can be found and you just need the first
# break