未调用Scrapy分析函数

zbsbpyhn  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(125)

我有这个简单的代码:

import scrapy
import re
import json

# from scrapy.http import FormRequest

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class SpiderRecipe(CrawlSpider):
    name = "recipe"
    start_urls = [
        # 'https://www.giallozafferano.it/',
        'https://ricetta.it/dolci?page=1',
        # 'https://www.buonissimo.it/',
        # 'https://migusto.migros.ch/it.html'
    ]

    def parse(self,response):
        URL = response.request.url()
        if URL.split('/')[2] == "www.ricetta.it":

        recipes = response.xpath('//div[contains(@class,"row")]/div[contains(@class,"post-img-left")]').extract()
        # iterate through each recipe in a page
        for x in recipes.extract():
            title = response.xpath(recipes + '/a[contains(@class, "post-title")]/text()').extract()[x]
            image = response.xpath(recipes + '/div[contains(@class,"videoContainer")]/img/@src').extract()[x]
            description = response.xpath(recipes + '/p[contains(@class,"post-excerpt")]/text()').extract()[x]
            yield {
                'Title': title,
                'Image': image,
                'Description': description,
            }
            page = int(URL.split('=')[1]) + 1;
            if (page <= 148):
                # iterate through each page of recipes
                yield scrapy.Request(URL.split('=')[0] + str(page), callback=self.parse, dont_filter=True)

它由终端使用scrapy runspider recipe.py com-o output.json调用。
codw的第一部分可以工作,因为它可以接受起始URL,但我不明白为什么parse函数没有被调用,而且如果代码不正确,我试图在函数的开头打印一个字符串,但它没有工作。我试图检查解决方案,但是我的函数在类内部,并且我已经正确地插入了我们必须开始的url(链接是正确的)。也许这是一个很容易的东西,但我找不到它。我还读到,函数必须被调用,但在例子中没有人这样做,此外,我不断调用它在代码的结尾。

jjhzyzn0

jjhzyzn01#

我解决了这个问题。我在另一个文件夹里有一个python的环境,然后我必须首先激活这个环境,然后我可以从我的spider所在的终端启动scrapy。这个类不需要示例化,方法也不需要手动调用,因为Scrapy会自动完成。

x7yiwoj4

x7yiwoj42#

当我开始学习scrappy并发现它来自www.example.com文件时,我也遇到了同样的问题settings.py

changing
ROBOTSTXT_OBEY = True
To 
ROBOTSTXT_OBEY = False

帮助我希望这对你也有帮助

相关问题