这可能是一个非常微不足道的问题,但我是 Scrapy 的新手。我试图找到问题的解决方案,但我只是看不出这段代码有什么问题。
我的目标是废弃给定网站上的所有歌剧节目。每个节目的数据都位于一个具有“row-fluid row-performance”类的 div 中。我试图迭代它们以检索它,但它不起作用。它为我提供了每次迭代中第一个 div 的内容(我得到了 19 倍相同的节目,而不是不同的项目)。
import scrapy
from ..items import ShowItem
class OperaSpider(scrapy.Spider):
name = "opera"
allowed_domains = ["http://www.opera.krakow.pl"]
start_urls = [
"http://www.opera.krakow.pl/pl/repertuar/na-afiszu/listopad"
]
def parse(self, response):
divs = response.xpath('//div[@class="row-fluid row-performance "]')
for div in divs:
item= ShowItem()
item['title'] = div.xpath('//h2[@class="item-title"]/a/text()').extract()
item['time'] = div.xpath('//div[@class="item-time vertical-center"]/div[@class="vcentered"]/text()').extract()
item['date'] = div.xpath('//div[@class="item-date vertical-center"]/div[@class="vcentered"]/text()').extract()
yield item
尝试更改 for 循环内的 xpaths.//
。也就是说,只需在双反斜杠前面加一个点即可。您也可以尝试使用extract_first()
代替extract()
看看这是否会给你带来更好的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)