Изучение Python и Scrapy - PullRequest
       5

Изучение Python и Scrapy

0 голосов
/ 17 сентября 2018

Я пытаюсь изучить Scrapy и Python.У меня проблема, которую я не понимаю.Я запускаю один и тот же кусок кода один раз через Терминал, а затем снова через скрипт, и результаты отличаются.Терминал дает мне все названия (что я хочу), сценарий просто дает мне первое.

for title in response.css('div.section-content ul'):
     item = {
             'title' : title.css('li h3 a::text').extract_first(),
            }

Я пытаюсь извлечь все названия фильмов на странице фильмов iTunes.

Любая помощь приветствуется.Спасибо

ОБНОВЛЕНИЕ

import scrapy


class ItunesSpider(scrapy.Spider):
    name = 'itunes'
    allowed_domains = ['apple.com']
    start_urls = ['apple.com/itunes/charts/movies/']

    def parse(self, response):

        self.log ('I just visited: ' + response.url)
        for title in response.css('div.section-content ul'):
            item = { 'title' : title.css('li h3 a::text').extract_first(), }
            yield item

1 Ответ

0 голосов
/ 20 сентября 2018

В вашем CSS-селекторе возникла простая мысленная ошибка; где вы просматриваете все элементы типа ul (и есть только один из них). То, что вы хотите, это циклически проходить элементы li.

# -*- coding: utf-8 -*-
import scrapy


class ItunesSpider(scrapy.Spider):
    name = 'itunes'
    allowed_domains = ['apple.com']
    start_urls = ['https://apple.com/itunes/charts/movies/']

    def parse(self, response):
        self.log ('I just visited: ' + response.url)
        for title in response.css('div.section-content ul li'):
            title = title.css('h3 a::text').extract_first()
            self.log('Title: %s' % title)
            item = { 
                'title' : title,
            }   
            yield item

Почему у вас "в терминале" по-другому, я не знаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...