BeautifulSoup 查找嵌套标签,children
BeautifulSoup finding nested tags, children
我看到了很多关于查找标签和标签内信息的信息,但我似乎找不到同样简单的东西。我想要做的是访问第 3 个 "td" 元素中 "a" 元素(在本例中为 "United States")的文本或标题。我 运行 遇到的问题是第三个 "td" 元素的 "style" 与第一个 "td" 元素("text-align: left")相同,所以我可以用它过滤,nextSibling 只让我向下一级,到第二个 "td" 元素。我的其余代码有效(虽然它让我使用我认为过时的 BeautifulSoup 语法,即使我安装了 Python 3.6.5 和 BS 4.6。我猜这是另一个问题)。我正在尝试让 "country" 变量起作用,我尝试了多种方法,但我尝试过的任何东西都不起作用,除了在最后放一堆 .next.next.next 。
HTML(https://en.wikipedia.org/wiki/Toronto_FC#Current_roster):
<td style="text-align: left">
<a href="/wiki/Goalkeeper_(association_football)"
title="Goalkeeper (association football)">Goalkeeper</a>
</td>
<td style="padding-right:15px;">
<span class="fn">...</span>
</td>
<td style="text-align: left">
<span class="flagicon">...</span>
<a href="/wiki/United_States" title="United States">United States</a>
</td>
我的代码:
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")
如有疑问,请使用 css-选择器。毫无疑问时使用 css-选择器
但显然,只有当您确定它永远是第三个时,它才会起作用 td
country = cards.select_one('td:nth-of-type(3) a')
print(country['title'], country.text)
我看到了很多关于查找标签和标签内信息的信息,但我似乎找不到同样简单的东西。我想要做的是访问第 3 个 "td" 元素中 "a" 元素(在本例中为 "United States")的文本或标题。我 运行 遇到的问题是第三个 "td" 元素的 "style" 与第一个 "td" 元素("text-align: left")相同,所以我可以用它过滤,nextSibling 只让我向下一级,到第二个 "td" 元素。我的其余代码有效(虽然它让我使用我认为过时的 BeautifulSoup 语法,即使我安装了 Python 3.6.5 和 BS 4.6。我猜这是另一个问题)。我正在尝试让 "country" 变量起作用,我尝试了多种方法,但我尝试过的任何东西都不起作用,除了在最后放一堆 .next.next.next 。
HTML(https://en.wikipedia.org/wiki/Toronto_FC#Current_roster):
<td style="text-align: left">
<a href="/wiki/Goalkeeper_(association_football)"
title="Goalkeeper (association football)">Goalkeeper</a>
</td>
<td style="padding-right:15px;">
<span class="fn">...</span>
</td>
<td style="text-align: left">
<span class="flagicon">...</span>
<a href="/wiki/United_States" title="United States">United States</a>
</td>
我的代码:
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")
如有疑问,请使用 css-选择器。毫无疑问时使用 css-选择器
但显然,只有当您确定它永远是第三个时,它才会起作用 td
country = cards.select_one('td:nth-of-type(3) a')
print(country['title'], country.text)