Python 抓取下一页。正确的规则语法

Python 抓取下一页。正确的规则语法,python,scrapy,Python,Scrapy,我正在尝试使用scrapy进行递归web抓取。我想转到“”并按“下一步”按钮从此网站获取所有产品名称和价格 我能够创建这个蜘蛛(工作正常): 但是,为了使代码更加专业,根据这一点,我想通过实现“规则”来做到这一点。我更改了代码,如示例所示,但它不起作用。它甚至不能从主页上获取数据 # -*- coding: iso-8859-2 -*- import scrapy from DOZ2.items import prodItem from scrapy.linkextractors impor

我正在尝试使用scrapy进行递归web抓取。我想转到“”并按“下一步”按钮从此网站获取所有产品名称和价格

我能够创建这个蜘蛛(工作正常):

但是,为了使代码更加专业,根据这一点,我想通过实现“规则”来做到这一点。我更改了代码,如示例所示,但它不起作用。它甚至不能从主页上获取数据

# -*- coding: iso-8859-2 -*-

import scrapy

from DOZ2.items import prodItem
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

class DmozSpider(scrapy.Spider):
    name = "DOZ2b"
    allowed_domains = ["doz.pl"]
    start_urls = ["https://www.doz.pl/apteka/k17_1-Przeciwbolowe"]
    rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//li[@class="next"]/a',)), callback="parse_page", follow= True),)

    def parse_page(self, response):

        for sel in response.xpath('//div[@class="details"]'):
            i=prodItem()
            i['price'] = sel.xpath('div[@class="price"]/span/text()').extract()[0]
            i['name'] = sel.xpath('h3/a/text()').extract()[0]
            i['link'] = sel.xpath('h3/a/@href').extract()[0]
            yield i
如果有人能指出我做错了什么,而我的第二个代码不起作用,我将不胜感激?我做了所有必需的更改:创建了规则,更改了解析函数的名称,修改了受限路径


提前感谢您的帮助。

在scrapy中有相当多的
爬行器
,所有这些爬行器只需扩展
scrapy.Spider
,并添加一些功能即可。要使用它,您实际上需要在创建spider类时从中继承:

from scrapy.spiders import CrawlSpider
class MyCrawlSpider(CrawlSpider):
     name = 'crawlspider1'
     rules = ... # define your rules here

创建爬行器类时,如果要使用规则,则应继承
scrapy.spider.CrawlSpider
而不是
scrapy.spider
。它现在正在工作。非常感谢。干杯我已经发布了答案,以便其他人可以更容易地找到它,不幸的是,不是每个人都阅读了评论。在侧注中,检查scrapy拥有的其他酷蜘蛛和爬行蜘蛛本身的文档:
from scrapy.spiders import CrawlSpider
class MyCrawlSpider(CrawlSpider):
     name = 'crawlspider1'
     rules = ... # define your rules here