gpt4 book ai didi

python - 如何使用 response.css() 和 response.follow() 在 Scrapy 中对最后一页进行分页?

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:50 25 4
gpt4 key购买 nike

这是我从第一页到最后一页的分页代码:

    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,except,else 处理:

    try:
url = response.css("li.next a")[0]
except IndexError:
pass
else:
yield response.follow(url, self.parse)

我在问是否有更好更短的方法来解决这个问题,还是我应该坚持使用旧的 response.url() 方法进行分页?我问这个是因为我在他们的发行说明中看到了这个,用粗体显示,“它现在是在 Scrapy 蜘蛛中创建请求的推荐方法”。

最佳答案

使用发行说明方式怎么样?

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
  • 如果没有给定选择器的元素,则不会激活循环
  • 如果有下一个元素,可以yield执行。
  • 最后一个中断用于处理页面包含多个下一个元素。

关于python - 如何使用 response.css() 和 response.follow() 在 Scrapy 中对最后一页进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44491559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com