我无法传递参考。启动蜘蛛时,我没有获取数据 代码帮助。
我是Scrapy的初学者
import scrapy
from movie.items import AfishaCinema
class AfishaCinemaSpider(scrapy.Spider):
name = 'afisha-cinema'
allowed_domains = ['kinopoisk.ru']
start_urls = ['https://www.kinopoisk.ru/premiere/ru/']
def parse(self, response):
links = response.css('div.textBlock>span.name_big>a').xpath(
'@href').extract()
for link in links:
yield scrapy.Request(link, callback=self.parse_moov,
dont_filter=True)
def parse_moov(self, response):
item = AfishaCinema()
item['name'] = response.css('h1.moviename-big::text').extract()
答案 0 :(得分:2)
未获取数据的原因是您yield
方法中没有parse_moov
。根据{{3}},解析方法必须返回Request
和/或字典或Item
对象的可迭代对象。因此添加
yield item
在parse_moov
方法的结尾。
此外,为了能够运行您的代码,我必须进行修改
yield scrapy.Request(link, callback=self.parse_moov, dont_filter=True)
到
yield scrapy.Request(response.urljoin(link), callback=self.parse_moov, dont_filter=True)
在parse
方法中,否则我遇到错误:
ValueError: Missing scheme in request url: /film/monstry-na-kanikulakh-3-more-zovyot-2018-950968/
(这是因为Request
构造函数需要绝对URL,而页面包含相对URL。)