Python 刮痕蜘蛛爬行0页
我试图用Scrapy从网站中提取json数据,但我遇到了一些问题,比如当我运行我的spider时,没有给出错误,并说爬网了0个页面。我还使用该命令将de输出存储到json文件以查看输出 以下代码是我的spider: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&
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)