gpt4 book ai didi

python - 无法在python中使用scrapy迭代数据

转载 作者:行者123 更新时间:2023-12-01 07:38:55 25 4
gpt4 key购买 nike

我正在下面的网站上抓取女 Actor 姓名、排名和分数 http://www.timescelebex.com/top_actresses

我可以获得 1 条记录,但无法使用 for 迭代查找其余记录

我可以接收如下数据,但只有 1 条记录

{'分数':u'41.0','姓名':u'Deepika Padukone','排名':u'1'}

我想像上面那样提取所有记录

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


class ActressListSpider(scrapy.Spider):
name = 'actress_list'
allowed_domains = ['timescelebex.com/top_actresses']
start_urls = ['http://timescelebex.com/top_actresses/']

def parse(self, response):
names=response.xpath('/html/body/div[2]/section/div/div/div[1]/table/tbody/tr/td/table/tbody/tr/td[1]/table/tbody')

for name in names:
actress = name.xpath('//*[@class="Droid Ctxt1"]/text()').extract_first()
rank = name.xpath('//*[@class="Droid Stext"]/text()').extract_first()
score = name.xpath('//*[@class="Stext2"]/text()').extract_first()

yield{'Name':actress,'Rank':rank,'Score':score}

如果我使用 .extract 而不是 .extract_first() 我可以看到所有数据,但其输入如下

{'得分': , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]>, '名称': , , , , , , , , , , , , , , , , , , ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,] >, ‘排名’: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]>}

最佳答案

您需要在 for 循环中使用相对 XPath:

def parse(self, response):
names=response.xpath('//table[@class="ITable"]//table//tr[position() > 2]')

for name in names:
actress = name.xpath('.//*[@class="Droid Ctxt1"]/text()').extract_first()
rank = name.xpath('.//*[@class="Droid Stext"]/text()').extract_first()
score = name.xpath('.//*[@class="Stext2"]/text()').extract_first()

yield{'Name':actress,'Rank':rank,'Score':score}

关于python - 无法在python中使用scrapy迭代数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56823192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com