使用靓汤却无法获取某些信息

2024-06-26 00:09:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在写一个数据收集程序来获取曲棍球数据。我从中获取信息的页面有一些统计信息,只有单击javascript按钮时才可用,但是当我美化soup时,我可以看到所有数据都在soup变量中。这是我尝试访问的内容的一个示例(这是从打印(soup)粘贴的副本)

<tr class="ALL5v5 hidden" ><th scope="row" class="left " data-append-csv="bozakty01" data-stat="player" csk="Bozak,Tyler" ><a href="/players/b/bozakty01.html">Tyler Bozak</a></th><td class="right " data-stat="Cevents" >0</td><td class="right " data-stat="on_Cevents" >4</td><td class="right " data-stat="on_opp_Cevents" >5</td><td class="right " data-stat="corsi_for" >44.4</td><td class="right " data-stat="corsi_rel" >-2.5</td><td class="right " data-stat="zs_off" >2</td><td class="right " data-stat="zs_def" >0</td><td class="right " data-stat="ozs_pct" >100.0</td><td class="right " data-stat="hits" >2</td><td class="right " data-stat="blocks" >0</td></tr>
<tr class="CL5v5 hidden" ><th scope="row" class="left " data-append-csv="bozakty01" data-stat="player" csk="Bozak,Tyler" ><a href="/players/b/bozakty01.html">Tyler Bozak</a></th><td class="right " data-stat="Cevents" >0</td><td class="right " data-stat="on_Cevents" >2</td><td class="right " data-stat="on_opp_Cevents" >4</td><td class="right " data-stat="corsi_for" >33.3</td><td class="right " data-stat="corsi_rel" >-10.7</td><td class="right " data-stat="zs_off" >0</td><td class="right " data-stat="zs_def" >0</td><td class="right " data-stat="ozs_pct" ></td><td class="right " data-stat="hits" >2</td><td class="right " data-stat="blocks" >0</td></tr>

访问我尝试过的数据

soup.find_all('tr',{'data-stat': "on_Cevents"})
soup.find_all("tr", class_="ALL5v5 hidden")
soup.find_all({'data-stat': "Cevents"})
soup.find_all('td',{'data-stat': "Cevents"})

这些都无法访问信息,即使这些信息都包含在soup变量中。你知道吗

我看不出有什么问题。我使用以下命令

players = soup.find_all('td', {'data-stat': "player"})

访问玩家信息,这很好。但我无法访问上面列出的信息。你知道吗


Tags: 数据right信息dataonallfindtr
1条回答
网友
1楼 · 发布于 2024-06-26 00:09:47

我想你在另一个部分有问题。请再次检查您的配置。 或者它是html结构的另一部分的结果,你还没有展示给我们。你知道吗

这是我写的剧本。你知道吗

from bs4 import BeautifulSoup

html = '<tr class="ALL5v5 hidden" ><th scope="row" class="left " data-append-csv="bozakty01" data-stat="player" csk="Bozak,Tyler" ><a href="/players/b/bozakty01.html">Tyler Bozak</a></th><td class="right " data-stat="Cevents" >0</td><td class="right " data-stat="on_Cevents" >4</td><td class="right " data-stat="on_opp_Cevents" >5</td><td class="right " data-stat="corsi_for" >44.4</td><td class="right " data-stat="corsi_rel" >-2.5</td><td class="right " data-stat="zs_off" >2</td><td class="right " data-stat="zs_def" >0</td><td class="right " data-stat="ozs_pct" >100.0</td><td class="right " data-stat="hits" >2</td><td class="right " data-stat="blocks" >0</td></tr><tr class="CL5v5 hidden" ><th scope="row" class="left " data-append-csv="bozakty01" data-stat="player" csk="Bozak,Tyler" ><a href="/players/b/bozakty01.html">Tyler Bozak</a></th><td class="right " data-stat="Cevents" >0</td><td class="right " data-stat="on_Cevents" >2</td><td class="right " data-stat="on_opp_Cevents" >4</td><td class="right " data-stat="corsi_for" >33.3</td><td class="right " data-stat="corsi_rel" >-10.7</td><td class="right " data-stat="zs_off" >0</td><td class="right " data-stat="zs_def" >0</td><td class="right " data-stat="ozs_pct" ></td><td class="right " data-stat="hits" >2</td><td class="right " data-stat="blocks" >0</td></tr>'

soup = BeautifulSoup(html, "html.parser")

# print(soup)

print(soup.find_all('th', {'data-stat': "player"})) # I think 'th' is correct, not 'td'
print(soup.find_all('tr',{'data-stat': "on_Cevents"}))
print(soup.find_all("tr", class_="ALL5v5 hidden"))
print(soup.find_all({'data-stat': "Cevents"}))
print(soup.find_all('td',{'data-stat': "Cevents"}))

这是结果。我可以用你尝试过的一些代码来访问数据。你知道吗

[<th class="left " csk="Bozak,Tyler" data-append-csv="bozakty01" data-stat="player" scope="row"><a href="/players/b/bozakty01.html">Tyler Bozak</a></th>, <th class="left " csk="Bozak,Tyler" data-append-csv="bozakty01" data-stat="player" scope="row"><a href="/players/b/bozakty01.html">Tyler Bozak</a></th>]
[]
[<tr class="ALL5v5 hidden"><th class="left " csk="Bozak,Tyler" data-append-csv="bozakty01" data-stat="player" scope="row"><a href="/players/b/bozakty01.html">Tyler Bozak</a></th><td class="right " data-stat="Cevents">0</td><td class="right " data-stat="on_Cevents">4</td><td class="right " data-stat="on_opp_Cevents">5</td><td class="right " data-stat="corsi_for">44.4</td><td class="right " data-stat="corsi_rel">-2.5</td><td class="right " data-stat="zs_off">2</td><td class="right " data-stat="zs_def">0</td><td class="right " data-stat="ozs_pct">100.0</td><td class="right " data-stat="hits">2</td><td class="right " data-stat="blocks">0</td></tr>]
[]
[<td class="right " data-stat="Cevents">0</td>, <td class="right " data-stat="Cevents">0</td>]

相关问题 更多 >