python bs4从button类内的属性提取

2024-09-28 18:57:51 发布

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

所以我尝试使用BeautifulSoup4获取属性的值。你知道吗

replay_url_data = matchdatatr[1].findAll("button",{"class":"replay_button_super"})

这就是我将所有数据放入对象的方式。 在控制台中键入重播url\u数据,返回:

<button class="replay_button_super" data-client-version="0.0.2.21" data-rel="spectatePopup" data-spectate-encryptionkey="bPPxpLIDmi0hRfU2U8B9Li1VJfTTx6pZ" data-spectate-endpoint="replays.cosmicradiance.com:80" data-spectate-gameid="4339075348" data-spectate-link="/api/spectate/UEJPNkN4MkIwUkZERUJ0MWUyZ3dDTmxGT25kanlUN2V6YnpuZUQ0bVlyMWRReGNDRXprZ1lQVnRnSkNHMG04Y2hUdVhxQm9abHFsQ2VBaTRaYVFPdnc9PQ==" data-spectate-platform="Modigu1" data-width="640"><i class="fa fa-play"></i>Replay</button>

我想得到数据透视链接的值。你知道吗

我已经尝试了所有谷歌搜索结果,我发现类似的主题,但没有任何工作。你知道吗

replay_url_split = replay_url_data[0].findAll("button",{"class":"data-spectate-link"})

返回“[]”空。你知道吗

replay_url_data[0].find('data-spectate-platform')

这将返回相同的空结果

replay_url_data[0].find('button',attrs={'class' : 'data-spectate-link'})

这个返回与上面相同的“[]”空。你知道吗

在谷歌上搜索了3个小时之后,到目前为止,我和我都没有得到任何帮助绝望。我对python和html还不熟悉,请原谅我的愚蠢。你知道吗


Tags: 数据urlreplaydata属性linkbuttonfind
3条回答
soup.button['data-spectate-link']

是你想要的。你知道吗

soup.button在汤中设置标记。然后使用['data-spectate-link']可以在标记内设置属性。你知道吗

docs here

data-spectate-link是一个属性。到获取data-spectate-link的值,您需要使用element['data-spectate-link']

您可以使用findAll()或CSS选择器select()

replay_url_data =matchdatatr[1].findAll("button",attrs={"class" :"replay_button_super", "data-spectate-link" :True})
print(replay_url_data[0]['data-spectate-link'])

或Css选择器

replay_url_data =soup.select("button.replay_button_super[data-spectate-link]")
print(replay_url_data[0]['data-spectate-link'])

要获取属性,可以使用.attrs["data-spectate-link"]或直接["data-spectate-link"]


示例

from bs4 import BeautifulSoup as BS

text = '<button class="replay_button_super" data-client-version="0.0.2.21" data-rel="spectatePopup" data-spectate-encryptionkey="bPPxpLIDmi0hRfU2U8B9Li1VJfTTx6pZ" data-spectate-endpoint="replays.cosmicradiance.com:80" data-spectate-gameid="4339075348" data-spectate-link="/api/spectate/UEJPNkN4MkIwUkZERUJ0MWUyZ3dDTmxGT25kanlUN2V6YnpuZUQ0bVlyMWRReGNDRXprZ1lQVnRnSkNHMG04Y2hUdVhxQm9abHFsQ2VBaTRaYVFPdnc9PQ==" data-spectate-platform="Modigu1" data-width="640"><i class="fa fa-play"></i>Replay</button>'
soup = BS(text, 'html.parser')

all_buttons = soup.findAll("button", {"class": "replay_button_super"})
one_button = all_buttons[0]

value = one_button["data-spectate-link"]
print(value)

value = one_button.attrs["data-spectate-link"]
print(value)

顺便说一句:如果要搜索带有属性data-spectate-link的按钮,则必须搜索

{"data-spectate-link": True}

不是{"class": "data-spectate-link"}


示例

from bs4 import BeautifulSoup as BS

text = '''<button>Other button</button>
<button>Other button</button>
<button>Other button</button>
<button class="replay_button_super" data-client-version="0.0.2.21" data-rel="spectatePopup" data-spectate-encryptionkey="bPPxpLIDmi0hRfU2U8B9Li1VJfTTx6pZ" data-spectate-endpoint="replays.cosmicradiance.com:80" data-spectate-gameid="4339075348" data-spectate-link="/api/spectate/UEJPNkN4MkIwUkZERUJ0MWUyZ3dDTmxGT25kanlUN2V6YnpuZUQ0bVlyMWRReGNDRXprZ1lQVnRnSkNHMG04Y2hUdVhxQm9abHFsQ2VBaTRaYVFPdnc9PQ==" data-spectate-platform="Modigu1" data-width="640"><i class="fa fa-play"></i>Replay</button>
<button>Other button</button>
<button>Other button</button>'''

soup = BS(text, 'html.parser')

all_buttons = soup.findAll("button", {"data-spectate-link": True})
one_button = all_buttons[0]

value = one_button["data-spectate-link"]
print(value)

相关问题 更多 >