簡體   English   中英

如何更改選擇器scrapy?

[英]How do I change the selector scrapy?

如何更改選擇器scrapy? 在蜘蛛工作期間。

請看一下我的代碼:

# -*- coding: utf-8 -*-
import scrapy
from kino.items import KinoItem


class KinopoiskSpider(scrapy.Spider):
    name = 'kinopoisk'
    allowed_domains = ['kinopoisk.ru']
    start_urls = ['https://www.kinopoisk.ru/afisha/new/city/1/']

    def parse(self, response):
        links = response.css('div.name>a').xpath('@href').extract()
        for link in links:
            yield scrapy.Request(response.urljoin(link), callback=self.parse_moov, dont_filter=True)

    def parse_moov(self, response):
        item = KinoItem()
        item['orgname'] = response.css('div#headerFilm>span::text').extract()
        item['name'] = response.css('h1.moviename-big::text').extract()
        item['rating'] = response.css('div.block_2>div.div1>a>span.rating_ball::text').extract()
        item['r_critic'] = response.css('div.ratingNum>span::text').extract()
        item['waiting'] = response.xpath('//*[@id="block_rating"]/div[1]/div[3]/a[1]/text()').extract()
        if item['waiting'] is None:
            item['waiting_two'] = response.xpath('//*[@id="block_rating"]/div[1]/div[2]/a[1]/text()').extract()
        item['runtime'] = response.css('td#runtime::text').extract()
        item['premiere'] = response.xpath('//*[@id="div_rus_prem_td2"]/div/span[1]/a[1]/text()').extract()
        item['info'] = response.css('div.brand_words.film-synopsys::text').extract()

        yield item

在這里, if item['waiting'] is None: item['waiting_two']不起作用。 有人可以在這里建議一些幫助嗎?

其實我不認為這是一個選擇器問題。

extract()方法不提取任何內容時,它將返回一個空列表。 空列表在Python中不是“無”。

例如:

(same result both in python 2 and python 3)
>>> a = []
>>> a is None
False
>>> not a
True

這意味着if item['waiting'] is Noneif not item['waiting']應該更改為if not item['waiting']

我打印項目的結果:

(orgin)
==========================
orgname: []
name: ['Килиманджара']
rating: []
r_critic: []
waiting: [] <==== This is the empty list that extract() returned.
runtime: ['75 мин. ', ' 01:15']
premiere: ['19 июля 2018']
info: ['Когда к\xa0тебе на\xa0свадьбу не\xa0приезжает жених, остается только одно\xa0\x97\xa0найти его. Именно так\xa0и поступает красавица Маруся, отправившись на\xa0поиски своего возлюбленного в\xa0его родной Азербайджан. И\xa0хорошо, что\xa0рядом есть дружная команда друзей, или\xa0не очень дружная и\xa0не совсем друзей. На\xa0такие приключения в\xa0Баку не\xa0рассчитывал никто из\xa0компании Маруси, как\xa0и сами жители.']
==========================

(changed, I print waiting_two before the others)
waiting_two: ['78%']
==========================
orgname: []
name: ['Килиманджара']
rating: []
r_critic: []
waiting: []
runtime: ['75 мин. ', ' 01:15']
premiere: ['19 июля 2018']
info: ['Когда к\xa0тебе на\xa0свадьбу не\xa0приезжает жених, остается только одно\xa0\x97\xa0найти его. Именно так\xa0и поступает красавица Маруся, отправившись на\xa0поиски своего возлюбленного в\xa0его родной Азербайджан. И\xa0хорошо, что\xa0рядом есть дружная команда друзей, или\xa0не очень дружная и\xa0не совсем друзей. На\xa0такие приключения в\xa0Баку не\xa0рассчитывал никто из\xa0компании Маруси, как\xa0и сами жители.']
==========================

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM