我是新来的,我的一只蜘蛛给我惹麻烦了。我想要一些帮助来找出我的代码中的错误。我在跟踪一些URL后循环一个表,循环得到所有的行,但只从第一行得到数据
这是我的代码:
def parse(self, response):
Caballo = response.url
jockey_url = response.xpath(
'.//*[@id="site-content"]/div/main/div/div[1]/div[1]/div/div/div/div[1]/div[2]/div[2]/div/div[1]/ul/li[4]/a/@href').get()
loader = ItemLoader(item=DailyItem(), response=response)
loader.add_value('Caballo', Caballo)
loader.add_xpath('jockey', './/*[@id="site-content"]/div/main/div/div[1]/div[1]/div/div/div/div[1]/div[2]/div[2]/div/div[1]/ul/li[4]/a/text()')
new_items = loader.load_item()
yield response.follow(jockey_url, self.parse_jockey, meta={'item': new_items})
def parse_jockey(self, response):
new_items = response.meta['item']
table = response.xpath('//*[@id="tab-form-alltime"]/div/table/tbody/tr')
for t in table:
loader = ItemLoader(item=new_items, selector=t)
loader.add_xpath('Type', './/td[1]/text()')
loader.add_xpath('Rate', './/td[6]/text()')
yield loader.load_item()
这是其中一个URL的输出,如您所见,共有3行,很好,但相同 有关数据:
{"Caballo": "https://www.attheraces.com/form/horse/Alexanderthegreat/FR/3022995?raceid=1149928", "jockey": "Jason Hart", "Type": "Flat Turf", "Rate": "11.57%"},
{"Caballo": "https://www.attheraces.com/form/horse/Alexanderthegreat/FR/3022995?raceid=1149928", "jockey": "Jason Hart", "Type": "Flat Turf", "Rate": "11.57%"},
{"Caballo": "https://www.attheraces.com/form/horse/Alexanderthegreat/FR/3022995?raceid=1149928", "jockey": "Jason Hart", "Type": "Flat Turf", "Rate": "11.57%"},
这是bucle必须获取的:
所以我认为问题的症结在于你的幻觉
代码示例test.py
代码示例items.py
输出
提示
1.如果试图提取的HTML标记有class或id属性,请尝试使用该属性来获取信息,而不是XPATH中的一长串div。2.对于长属性名,请使用XPATH中的contains函数,该函数将获取 包含您指定的内容
比如说
将获取class属性中包含jock的任何div
相关问题 更多 >
编程相关推荐