Scrapy JSON输出 - 值为空

时间:2017-11-13 03:38:46

标签: python json scrapy

我想使用scrapy抓取一组网页。但是,当我尝试将一些值写入json文件时,这些字段不会显示。

这是我的代码:

import scrapy

class LLPubs (scrapy.Spider):
    name = "linlinks"
    start_urls = [
        'http://www.linnaeuslink.org/records/record/1',
        'http://www.linnaeuslink.org/records/record/2',
    ]

    def parse(self, response):
        for container in response.css('div.item'):
            yield {
                'text': container.css('div.field.soulsbyNo .value span::text').extract(),
                'uniformtitle': container.css('div.field.uniformTitle .value span::text').extract(),
                'title': container.css('div.field.title .value span::text').extract(),
                'opac': container.css('div.field.localControlNo .value span::text').extract(),
                'url': container.css('div#digitalLinks li a').extract(),
                'partner': container.css('div.logoContainer  img:first-child').xpath('@src').extract(),
                }

我输出的一个例子:

{
"text": ["Soulsby no. 46(1)"], 
"uniformtitle": ["Systema naturae"], 
"title": ["Caroli Linn\u00e6i ... Systema natur\u00e6\nin quo natur\u00e6 regna tria, secundum classes, ordines, genera, species, systematice proponuntur."], 
"opac": ["002178079"], 
"url": [], 
"partner": []
},

我希望我做的事情愚蠢且容易修复!我用于“url”和“partner”的两条路径都在这里工作:

scrapy shell 'http://www.linnaeuslink.org/records/record/1'

所以,我只是不知道自己错过了什么。

哦,现在使用此命令导出到json:

scrapy crawl linlinks -o quotes.json

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

问题似乎是那些选择器不可以找到"在任何div.item内你可能已经验证了它们而没有response.css('div.item')复制你在shell中使用的内容只需将container.css替换为response.css urlpartner {1}}键。