嘿,我只是想测试一下Python Webscraping,我不知道为什么它不能工作。作为输出,我变成了[],没有其他东西。有谁有主意吗?BEcause如果我到网站上搜索元素,我会找到它。
from bs4 import BeautifulSoup
import requests
html_text = requests.get("https://osu.ppy.sh/users/20488254").text
soup = BeautifulSoup(html_text, "lxml")
job = soup.find("div", class_ = "profile-detail__col profile-detail__col--bottom-right")
print(job)发布于 2021-08-26 16:23:12
使用JS动态加载播放器信息。因此,您不能使用普通的bs4抓取动态内容。幸运的是,它们在脚本标记中以json格式提供用户信息。如果你打开页面源代码并查找json-user,你会看到有一个标签:
<script id="json-user" type="application/json">
{"avatar_url":"https:\/\/a.ppy.sh\/20488254?1622470835.jpeg","country_code":"AT","default_group":"default","id":20488254,...
</script>您可以将json放在该标记中,并获取有关播放器的任何信息。下面是它看起来的样子:
import json
import requests
from bs4 import BeautifulSoup
html_text = requests.get("https://osu.ppy.sh/users/20488254").text
soup = BeautifulSoup(html_text, "lxml")
json_data = json.loads(soup.find('script', {'id':'json-user'}).string)现在假设你正在寻找玩家的全球排名。您所需要做的就是找到正确的键来导航到那里:
player_rank = json_data['statistics']['global_rank']
# -> 199303https://stackoverflow.com/questions/68942011
复制相似问题