Печатать только строки в html с ‘ внутри разделителя (HTML), используя стек BeautifulSoup

#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. Спасибо вам и другим. Обратная связь была очень полезной.