问题描述
我正在尝试学习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楼
您的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
我不知道为什么它在终端机中对您有所不同。