我想使用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
感谢您的帮助!
答案 0 :(得分:2)
问题似乎是那些选择器不可以找到"在任何div.item
内你可能已经验证了它们而没有response.css('div.item')
复制你在shell中使用的内容只需将container.css
替换为response.css
url
和partner
{1}}键。