gpt4 book ai didi

python - Scrapy 分页在第 2 页后失败

转载 作者:行者123 更新时间:2023-12-01 07:18:48 25 4
gpt4 key购买 nike

我正在创建一个蜘蛛,它将爬行此处的每个页面:http://web.archive.org/web/20141217173753/http://www.docstoc.com/documents/legal/并仅返回卡名。正如我所期望的,它应该从起始页收集所有项目,然后按照“Next”分页链接(“BookEnd”类)并重复,直到没有这样的链接。

我需要更改什么才能使分页正常工作?

我是网络抓取新手。我已经通过手动输入每个页面到 start_urls 来使这个蜘蛛工作。 ,但我想让它更加自动化。

#!/usr/bin/env python3

import scrapy
from scrapy.http import Request

class TypeSpider(scrapy.Spider):
name = "types"
start_urls = ["https://web.archive.org/web/20141217173745/http://www.docstoc.com/documents/legal"]

def parse(self, response):
for card1 in response.xpath("//*[@class='doc-title']"):
text = card1.xpath(".//a/text()").extract_first()
yield{"Title": text}
for card2 in response.xpath("//*[@class='col-sm-10']"):
text = card2.xpath(".//h3/text()").extract_first()
yield{"Title": text}
next_page = response.css("li.BookEnd > a::attr(href)").extract_first()
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(url=next_page, callback=self.parse)

我希望蜘蛛爬行所有 34 个页面,但它在第 2 页后退出:

DEBUG: Filtered duplicate request: <GET https://web.archive.org/web/20141217173750/http://www.docstoc.com/documents/legal/2> - no more duplicates will be shown (see DUPEFILTER_DEBUG to show all duplicates)

dont_filter对我不起作用。

附注我在这里同时使用 xPath 和 CSS 只是因为我无法使用 xPath 提取分页链接 – 不明白为什么。

最佳答案

当你不再在第一页时,你的CSS选择器会转到下一页,实际上会转到上一页。解决这个问题的方法如下:

next_page = response.css("li.BookEnd > a::attr(href)").extract()[-1]

关于python - Scrapy 分页在第 2 页后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57808694/

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