Scrapy:如何传递链接

时间:2018-07-13 08:30:58

标签: python-3.x web-scraping scrapy

我无法传递参考。启动蜘蛛时,我没有获取数据 代码帮助。

我是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()

1 个答案:

答案 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。)