scrapy分页抓取网页(Scrapy跳转到倒数第二页(基于示例地址地址)吗?)

优采云 发布时间: 2021-10-25 18:10

  scrapy分页抓取网页(Scrapy跳转到倒数第二页(基于示例地址地址)吗?)

  我有 Scrapy 的分页问题。

  我通常成功使用以下代码

  next_page = response.xpath("//div//div[4]//ul[1]//li[10]//a[1]//@href").extract_first()

if next_page is not None:

yield scrapy.Request(url = response.urljoin(next_page), callback=self.parse)

  事实证明,在这次尝试中,我遇到了一个使用 5 个页面块的 网站。见下文。

  

  因此,在捕获前 5 页后,Scrapy 跳转到倒数第二页(526).

  分页结构遵循以下逻辑:

  它在数量上增加。

  任何人都可以帮助我进行此分页增量查询(基于示例地址)?

  最佳答案

  当谈到分页时,最好的方法实际上取决于所使用的分页类型。

  如果你:

  了解url页面格式

  比如url参数page表示你所在的页面知道总页数

  然后您可以一次安排所有页面:

  def parse_listings_page1(self, response):

"""

here parse first page, schedule all other pages at once!

"""

# e.g. 'http://shop.com/products?page=1'

url = response.url

# e.g. 100

total_pages = int(response.css('.last-page').extract_first())

# schedule every page at once!

for page in range(2, total_pages + 1):

page_url = add_or_replace_parameter(url, 'page', page)

yield Request(page_url, self.parse_listings)

# don't forget to also parse listings on first page!

yield from self.parse_listings(response)

def parse_listings(self, response):

for url in response.css('.listing::attr(href)'):

yield Request(url, self.parse_product)

  这种方式最大的好处就是速度——在这里你可以采用异步逻辑,同时抓取所有页面!

  或者。

  如果你:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线