Python BeautifulSoup查找嵌套标记、子项

Python BeautifulSoup查找嵌套标记、子项,python,beautifulsoup,findall,nextsibling,Python,Beautifulsoup,Findall,Nextsibling,我看到了一堆关于查找标签和标签中信息的信息,但我似乎找不到类似的简单信息。我要做的是访问第3个“td”元素中“a”元素(在本例中为“美国”)的文本或标题。我遇到的问题是,第三个“td”元素的“样式”与第一个“td”元素(“文本对齐:左”)相同,因此我无法使用它进行过滤,而下一个sibling只允许我向下一级,进入第二个“td”元素。我其余的代码都能正常工作(尽管它让我使用了我认为已经过时的BeautifulSoup语法,尽管我已经安装了Python 3.6.5和BS 4.6。我想这是另一个问题)

我看到了一堆关于查找标签和标签中信息的信息,但我似乎找不到类似的简单信息。我要做的是访问第3个“td”元素中“a”元素(在本例中为“美国”)的文本或标题。我遇到的问题是,第三个“td”元素的“样式”与第一个“td”元素(“文本对齐:左”)相同,因此我无法使用它进行过滤,而下一个sibling只允许我向下一级,进入第二个“td”元素。我其余的代码都能正常工作(尽管它让我使用了我认为已经过时的BeautifulSoup语法,尽管我已经安装了Python 3.6.5和BS 4.6。我想这是另一个问题)。我试图让“country”变量起作用,我尝试了多种方法,但除了在末尾放一堆.next.next.next之外,我什么都没用

HTML():


如有疑问,请使用css选择器。如果没有疑问,请使用css选择器

但显然,只有当您确定它将始终是第三个
td

country = cards.select_one('td:nth-of-type(3) a')
print(country['title'], country.text)

这段代码以列表的形式返回了整个元素,因此它不适用于我获取文本的目的。太好了,谢谢!实际上,我将它调整为:
country=cards。选择一个('td:nth of type(3)a')。text
,它工作得非常好
vcard = page_soup.findAll("tr", {"class": "vcard agent"})
cards = vcard[0]

for cards in vcard:
    league = page_soup.find("a", {"title": "Major League Soccer"})
    league_name = league.text

    team = page_soup.find("h1", {"class": "firstHeading"})
    team_name = team.text

    position = cards.a.text

    name = cards.findAll("span", {"class": "fn"})
    player_name = unidecode(name[0].text)

    ***this variable not working***
    country = cards.find("td", {"style": "text-align: left")
country = cards.select_one('td:nth-of-type(3) a')
print(country['title'], country.text)