Python 刮痕爬行蜘蛛,链接后出现问题

Python 刮痕爬行蜘蛛,链接后出现问题,python,python-3.x,scrapy,scrapy-spider,Python,Python 3.x,Scrapy,Scrapy Spider,我知道有十几个与此相关的问题,但我所看到的没有一个在他们的蜘蛛中有超过一种方法 所以我正在抓取一个网站,从分类页面开始。我抓取产品类别的链接,然后尝试利用爬网蜘蛛的规则自动迭代每个类别中的“下一个”页面,在每个步骤中从页面中删除某些信息 问题是,我只是进入每个类别的第一页,似乎忽略了我设置的规则的follow=True方面。下面是代码,希望得到一些帮助: start_urls = ["http://home.mercadolivre.com.br/mais-categorias/"] rule

我知道有十几个与此相关的问题,但我所看到的没有一个在他们的蜘蛛中有超过一种方法

所以我正在抓取一个网站,从分类页面开始。我抓取产品类别的链接,然后尝试利用爬网蜘蛛的规则自动迭代每个类别中的“下一个”页面,在每个步骤中从页面中删除某些信息

问题是,我只是进入每个类别的第一页,似乎忽略了我设置的规则的follow=True方面。下面是代码,希望得到一些帮助:

start_urls = ["http://home.mercadolivre.com.br/mais-categorias/"]

rules = (
    # I would like this to force the spider to crawl through the pages... calling the product parser each time
    Rule(LxmlLinkExtractor(allow=(),
    restrict_xpaths = '//*[@id="results-section"]/div[2]/ul/li[@class="pagination__next"]'), follow = True, callback = 'parse_product_links'),
)

def parse(self, response):
    categories = CategoriesItem()
    #categories['categoryLinks'] = []
    for link in LxmlLinkExtractor(allow=('(?<=http://lista.mercadolivre.com.br/delicatessen/)(?:whisky|licor|tequila|vodka|champagnes)'), restrict_xpaths = ("//body")).extract_links(response):
        categories['categoryURL'] = link.url
        yield Request(link.url, meta={'categoryURL': categories['categoryURL']}, callback = self.parse_product_links)


# ideally this function would grab the product links from each page
def parse_product_links(self, response):
  # I have this built out in my code, but it isnt necessary so I wanted to keep it as de-cluttered as possible
start\u url=[”http://home.mercadolivre.com.br/mais-categorias/"]
规则=(
#我希望这能迫使爬行器在页面中爬行……每次都调用产品解析器
规则(lxmlinkextractor)(允许=(),
restrict\u xpaths='/*[@id=“results section”]/div[2]/ul/li[@class=“pagination\u next”]),follow=True,callback='parse\u product\u links'),
)
def解析(自我,响应):
categories=CategoriesItem()
#类别['CategoryLink']=[]
对于LXMLinkExtractor中的链接(允许=('(?)?
在编写爬行爬行器规则时,避免使用parse作为回调,因为爬行爬行器使用parse方法本身来实现其逻辑。因此,如果重写parse方法,爬行爬行器将不再工作

从文件中

如果你不熟悉scrapy的工作原理,那么使用ScrapSpider确实是不明智的。这是一种非常含蓄的快捷方式,可能会让人困惑

在您的例子中,您重写了
parse
,这是不应该发生的,您只有下一页的规则。
因此,摆脱
parse
方法,并扩展您的规则以包含两个规则:用于查找产品的规则和用于查找页面的规则(对于这一个,follow设置为True,因为您希望在新页面中查找新页面).

嘿,巴德,你不应该在函数中使用规则……它们在规则的顶部……把规则想成是一步一步地到达你的初始页面到你的项目……每个规则都是为了获得链接到那里谢谢你,我一直在阅读文档,但我认为这意味着不要在回拨规则,不过我会重新修改。非常感谢