#python #beautifulsoup
#python #beautifulsoup
Вопрос:
Я использую BeautifulSoup, чтобы открыть URL-адрес, найти разделитель с надписью ‘audience-container’, а затем печатать ТОЛЬКО строки, начинающиеся с «a href». Я сделал первые две части (я думаю), но не могу понять, как извлечь только строки ‘a href’ из раздела:
import re
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("httm://www.champlain.edu/current-students")
bs = BeautifulSoup(html.read(), "html parser")
for link in bs.find('div', {'id': 'audience-container'}):
print(link) #this prints the full section under audience-container, but not what I want
# print statement to pull out ONLY'a href' that I keep messing up
Комментарии:
1. Прежде всего, у вас опечатка. Это
http
(ы), а неhttm
.
Ответ №1:
Попробуйте это:
import requests
from bs4 import BeautifulSoup
main_url = "https://www.champlain.edu"
bs = BeautifulSoup(requests.get(f"{main_url}/current-students").text, "html.parser")
for link in bs.find('div', {"id": "audience-nav"}).find_all("a"):
print(f"{main_url}/{link.get('href')}")
Вывод:
https://www.champlain.edu/admitted-students
https://www.champlain.edu/current-students
https://www.champlain.edu/prospective-students
https://www.champlain.edu/undergrad-applicants
https://www.champlain.edu/online
https://www.champlain.edu/alumni
https://www.champlain.edu/parents
https://www.champlain.edu/faculty-and-staff
https://www.champlain.edu/school-counselors
https://www.champlain.edu/employer-resources
https://www.champlain.edu/prospective-employees
Ответ №2:
Попробуйте это:
from bs4 import BeautifulSoup
import requests
url = "http://www.champlain.edu/current-students"
html_content = requests.get(url).text
soup = BeautifulSoup(html_content, 'lxml')
for link in soup.find_all('a'):
print(link.get('href'))
В вашем коде ошибка: вместо http установлен httm.
Я надеюсь, что это полезно!
Комментарии:
1. Спасибо вам и другим. Обратная связь была очень полезной.