Получение ссылок href с веб-сайта с помощью модуля Python Beautiful Soup
Я пытаюсь получить ссылки href с этой страницы , в частности, ссылки на страницы соответствующих клубов. Мой текущий код выглядит следующим образом. Я не включил импорт. При необходимости я просто импортировал запросы и из bs4 импортировал BeautifulSoup:
rsoLink = "https://illinois.campuslabs.com/engage/organizations?query=badminton"
page = requests.get(rsoLink)
beautifulPage = BeautifulSoup(page.content, 'html.parser')
for link in beautifulPage.findAll("a"):
print(link.get('href'))
Мой вывод пустой, что говорит о том, что программа не нашла ссылки. Когда я посмотрел на HTML-структуру страницы, теги «a» кажутся вложенными глубоко в структуру страницы (они находятся внутри элемента, который находится внутри другого элемента, который сам находится внутри другого элемента). Мой вопрос в том, как я тогда буду получать доступ к ссылкам; я должен пройти через все эти элементы?
Ответы (1 шт):
Данные, которые вы видите на странице, загружаются с помощью JavaScript с другого URL. Так beautifulsoup не видит. Для загрузки данных вы можете использовать следующий пример:
import json
import requests
url = (
"https://illinois.campuslabs.com/engage/api/discovery/search/organizations"
)
params = {"top": "10", "filter": "", "query": "badminton", "skip": "0"}
data = requests.get(url, params=params).json()
# uncomment to print all data:
# print(json.dumps(data, indent=4))
for v in data["value"]:
print(
"{:<50} {}".format(
v["Name"],
"https://illinois.campuslabs.com/engage/organization/"
+ v["WebsiteKey"],
)
)