Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 刮痕蜘蛛爬行0页_Python_Json_Scrapy - Fatal编程技术网

Python 刮痕蜘蛛爬行0页

Python 刮痕蜘蛛爬行0页,python,json,scrapy,Python,Json,Scrapy,我试图用Scrapy从网站中提取json数据,但我遇到了一些问题,比如当我运行我的spider时,没有给出错误,并说爬网了0个页面。我还使用该命令将de输出存储到json文件以查看输出 以下代码是我的spider: import scrapy class WineSpider(scrapy.Spider): name = "SpidyWine" i = 0 url = 'https://maiscarrinho.com/api/search?q=vinho&pageNumber=%s&

我试图用Scrapy从网站中提取json数据,但我遇到了一些问题,比如当我运行我的spider时,没有给出错误,并说爬网了0个页面。我还使用该命令将de输出存储到json文件以查看输出

以下代码是我的spider:

import scrapy

class WineSpider(scrapy.Spider):
name = "SpidyWine"
i = 0
url = 'https://maiscarrinho.com/api/search?q=vinho&pageNumber=%s&pageSize=10'
start_urls = [url % 1]

def parse(self, response):
data = json.loads(response.body)
for item in data['results']:
    yield {
        'Image': item.get('image')
    }
if data['Image']:
    i = i + 1
    yield scrapy.Request(self.url % i, callback=self.parse)
以及我的项目类别:

import scrapy

class MaiscarrinhoItem(scrapy.Item):

 image = scrapy.Field()
 price = scrapy.Field()
 supermarket = scrapy.Field()
 promotion = scrapy.Field()
 wineName = scrapy.Field()
 brand = scrapy.Field()
现在,我只是使用我的蜘蛛中的图像字段来让事情变得更简单。 此外,当我在spider中编写if语句时,我的想法是“处理”无限的嘲讽,当json api具有“Image”时,意味着该页面具有内容


提前谢谢

除了一个很小的错误,你做的一切都对

包含图像的字段名是
image
,而不是
image

尝试:

settings.py文件中的
ITEM\u管道可能也有问题


我们很好地回答了我的问题,在深入研究了我的代码一段时间后。。。我意识到这是关于识别错误和一些语法错误

另一点是管道,我忘了将de last name更改为管道的真实名称,因此没有使用
'Maiscarrinho.pipelines.SomePipeline':300
现在我使用
'Maiscarrinho.pipelines.MaiscarrinhoPipeline':300

下面的代码正在提取我想要的图像,但还有一个问题。由于页面有无限滚动,我有一个条件来评估是否有一个名为
'Image
的元素,但由于某些原因,我没有得到期望的结果。它应该提取40页,每页10幅图像

import scrapy
import json

class WineSpider(scrapy.Spider):
name = "SpidyWine"

url = 'https://maiscarrinho.com/api/search?q=vinho&pageNumber=%s&pageSize=10'
start_urls = [url % 1]
i = 1
def parse(self, response):
    data = json.loads(response.body.decode('utf-8'))
    for item in data['results']:
        yield {
            'Image': item.get('Image')
        }
        if item.get('Image'):
            WineSpider.i += 1
            yield scrapy.Request(self.url % WineSpider.i, callback=self.parse)

谢谢,但是不行。当我运行命令:Scrapy crawl SpidyWine-o output.json时,它存储“[”您还可以将Scrapy字段更改为'Image=Scrapy.field()`然后重试?如果这不起作用,请在设置文件中的
ITEM\u PIPELINES
中注释管道
MaiscarrinhoItem
,然后运行。我按照您的建议更改了字段,但没有起作用。关于管道,您是否在settings.py中谈论ITEM\u PIPELINES?默认情况下,这段代码已经在注释中。您可以发布lin吗设置.py文件中的
项目管道
?如果您使用请求执行与爬行器相同的操作,它将提供图像路径。以下代码是我在设置.py中关于
项目管道
的代码:
#配置项目管道#请参阅http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html #ITEM#PIPELINES={#'Maiscarrinho.PIPELINES.SomePipeline':300,#
你用的是什么样的外壳?我无法复制你在图片中显示的内容。你能发布你的跑步日志吗?你可以通过
scrapy crawl myspider&>output.log
@Granitosaurus获得它。我编辑了我的帖子,你得到了图片,因为用你的命令我的文件是空的。
import scrapy
import json

class WineSpider(scrapy.Spider):
name = "SpidyWine"

url = 'https://maiscarrinho.com/api/search?q=vinho&pageNumber=%s&pageSize=10'
start_urls = [url % 1]
i = 1
def parse(self, response):
    data = json.loads(response.body.decode('utf-8'))
    for item in data['results']:
        yield {
            'Image': item.get('Image')
        }
        if item.get('Image'):
            WineSpider.i += 1
            yield scrapy.Request(self.url % WineSpider.i, callback=self.parse)