如何从这个特定的div类中获取文本?

2024-05-23 14:11:35 发布

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

我想在这里提取文本

大量文本

我曾经

url = ('https://osu.ppy.sh/users/1521445')
    page = requests.get(url, headers=headers)
    soup = BeautifulSoup(page.content, 'html.parser')
    mestuff = soup.find("div", {"class":"bbcode bbcode--profile-page"})

但它总是在终端显示“无”时返回

我该怎么办

链接为“https://osu.ppy.sh/users/1521445

(这是一个复述,因为旧问题非常旧。我不知道我是否应该提出另一个问题,但aa)


Tags: https文本urlgetshpagecontentrequests
2条回答

数据是从脚本标记动态加载的,所以,正如在另一个答案中一样,您可以从该标记抓取数据。您可以通过标记的id来定位标记,然后需要提取相关的json,然后从该json中提取html,然后解析将在页面上动态加载的html(此时您可以使用原始的类选择器)

import requests, json, pprint
from bs4 import BeautifulSoup as bs

r = requests.get('https://osu.ppy.sh/users/1521445')
soup = bs(r.content, 'lxml')
all_data = json.loads(soup.select_one('#json-user').text)
soup = bs(all_data['page']['html'], 'lxml')
pprint.pprint(soup.select_one('.bbcode profile-page').get_text('\n'))

你可以试试这个:

url = ('https://osu.ppy.sh/users/1521445')
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
x = soup.findAll("script",{"id":re.compile(r"json-user")})
result = re.findall('raw\":(.+)},\"previous_usernames', x[0].text.strip())
print(result)

我不知道为什么divclass='bbcode bbcode profile-page'script标记和class='json-user'string,这就是为什么你不能通过divclass='bbcode bbcode profile-page'得到它的值的原因

希望这能有所帮助

enter image description here

相关问题 更多 >