拆分XPATH会产生比实际可能更多的结果

时间:2020-05-14 23:21:02

标签: xpath web-scraping scrapy

我一直在尝试收集足球俱乐部经理的一些历史数据,并注意到一种奇怪的行为。我正在尝试从以下网站抓取由经理管理的俱乐部的历史记录表:https://www.transfermarkt.co.in/carlo-ancelotti/profil/trainer/523

将整个xpath作为获取响应的单个输入,代码按预期工作正常

clubs = response.xpath("//div[@id='yw1']//td[@class='hauptlink no-border-links']//a/text()").extract()
print(clubs)

Output : ['Everton', 'SSC Napoli', 'Bayern Munich ', 'Real Madrid', 'Paris SG',\
'Chelsea', 'Milan', 'Juventus', 'AC Parma', 'Reggiana', 'Italy']

这是预知历史记录表中的俱乐部列表。但是,虽然xpath如以下代码所示进行拆分,但尽管它具有完全不同的div ID,它也会从另一个表中获取俱乐部的名称。我的意思是其他表不是'yw1'

career_table = response.xpath("//div[@id='yw1']")
clubs = career_table.xpath("//td[@class='hauptlink no-border-links']//a/text()").extract()
print(clubs)

Output : ['Everton', 'SSC Napoli', 'Bayern Munich ', 'Real Madrid', 'Paris SG',\
'Chelsea', 'Milan', 'Juventus', 'AC Parma', 'Reggiana', 'Italy', 'Milan', 'Retired',\
'AS Roma', 'Milan', 'AC Parma', 'AS Roma', 'Parma U19', 'AC Parma', 'Reggiolo', 'Parma U19']

有人可以启发我,我在这里想念的是什么?

1 个答案:

答案 0 :(得分:2)

您需要使用相对 XPath(从.开始):

clubs = career_table.xpath(".//td[@class='hauptlink no-border-links']//a/text()").extract()
print(clubs)