首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scrapy Spider Crawl 0页

Scrapy Spider Crawl 0页
EN

Stack Overflow用户
提问于 2016-11-05 20:21:12
回答 2查看 368关注 0票数 1

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

下面的代码是我的爬虫:

代码语言:javascript
运行
复制
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)

和我的项目类别:

代码语言:javascript
运行
复制
import scrapy

class MaiscarrinhoItem(scrapy.Item):

 image = scrapy.Field()
 price = scrapy.Field()
 supermarket = scrapy.Field()
 promotion = scrapy.Field()
 wineName = scrapy.Field()
 brand = scrapy.Field()

现在,我只是在我的爬行器中使用Image字段来让事情变得更容易。此外,当我在爬虫中编写if语句时,我的理想是‘处理’无限的scorlling,而json api有'Image‘表示该页面有内容。

Output in Console

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2016-11-05 20:55:10

除了一个非常小的错误,你做的每件事都是正确的。

包含图像的字段名称为Image而不是image

尝试:

代码语言:javascript
运行
复制
yield {
    'Image': item.get('Image')
}

settings.py文件中的ITEM_PIPELINES可能也有问题

票数 1
EN

Stack Overflow用户

发布于 2016-11-12 23:00:59

好吧,回答我的问题,并在一段时间后深入研究我的代码……我意识到这是关于标识错误和一些语法错误。

另一个问题是管道,我忘了把姓氏改为管道的真实名称,所以现在我用'Maiscarrinho.pipelines.MaiscarrinhoPipeline': 300代替了'Maiscarrinho.pipelines.SomePipeline': 300

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

代码语言:javascript
运行
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40438189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档