网页抓取输出[]



嘿,我只是想测试Python网络抓取,我不知道为什么这不起作用。作为输出,i变成[]而不是其他。有人有主意吗?因为如果我去网站搜索元素,我找到它了。

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)

播放器信息是动态加载的。因此,您不能使用纯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并获得有关player的任何信息。下面是它的样子:

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']
# -> 199303

最新更新