Как я могу получить текст из указанного класса c div? - PullRequest
0 голосов
/ 03 апреля 2020

Я хочу извлечь текст здесь

много текста

Я использовал

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"})

, но он никогда не может вернуться с "None" в терминале.

Как я могу go об этом?

Ссылка "https://osu.ppy.sh/users/1521445"

(Это репост, поскольку старый вопрос был очень старым. не знаю, должен был я задать другой вопрос или нет, но аа)

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Данные динамически загружаются из тега скрипта, поэтому, как и в другом ответе, вы можете получить из этого тега. Вы можете выбрать тег по его идентификатору, затем вам нужно вытащить соответствующий json, затем html из этого json, а затем проанализировать 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'))
0 голосов
/ 03 апреля 2020

Вы можете попробовать это:

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)

Я не уверен, почему div с class='bbcode bbcode--profile-page' это string внутри script тег с class='json-user', поэтому вы не можете получить это значение на div с class='bbcode bbcode--profile-page'

Надеюсь, что это может помочь

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...