Заранее прошу прощения, если мой вопрос написан неправильно. Я пытался очистить https://www.bristol.ac.uk/study/undergraduate/search/search_results?sort=score&sort=UndergraduateCourse-programname&dir=desc&dir=asc&query=&filter-duate=&filder-duate=&filder%earpage3A = 1

Мне нужен только текст всех названий курсов. Написанный мной код дает мне только текст первого курса, даже если я использовал функцию «Найти все». Я думаю, может быть, это потому, что курсы есть в списке. Вот мой код:

from bs4 import BeautifulSoup
import requests

source = requests.get("https://www.bristol.ac.uk/study/undergraduate/search/search_results?sort=score&sort=UndergraduateCourse-programname&dir=desc&dir=asc&query=&filter%3AUndergraduateCourse-year=2021&page=1").text

soup = BeautifulSoup(source, 'lxml')

for div in soup.find_all('div', class_='course-results course-results-ug'):
    course = div.a.text
    print(course)

На выходе получается:

            Accounting and Finance
        , 
            BSc

Пожалуйста помоги. Я начал только недавно, поэтому не знаю никакого продвинутого кодирования

-1
Anmol Wadera 15 Сен 2020 в 20:02

1 ответ

Лучший ответ

Вы можете использовать селектор CSS .course-results-list a, чтобы получить все ссылки под списком курсов:

import requests
from bs4 import BeautifulSoup


source = requests.get("https://www.bristol.ac.uk/study/undergraduate/search/search_results?sort=score&sort=UndergraduateCourse-programname&dir=desc&dir=asc&query=&filter%3AUndergraduateCourse-year=2021&page=1").text
soup = BeautifulSoup(source, 'lxml')

for a in soup.select('.course-results-list a'):
    course = ', '.join(map(str.strip, a.text.split(',')))
    print(course)

Печать:

Accounting and Finance, BSc
Accounting and Finance with Professional Placement, BSc
Accounting and Finance with Study Abroad, BSc
Accounting and Management, BSc
Accounting and Management with Professional Placement, BSc
Accounting and Management with Study Abroad, BSc
Aerospace Engineering, BEng
Aerospace Engineering, MEng
Aerospace Engineering with Study Abroad, MEng
Aerospace Engineering with Study Abroad in a Modern Language, MEng
0
Andrej Kesely 15 Сен 2020 в 17:47