Я могу ошибаться, но похоже, что страница, которую вы пытаетесь очистить, имеет javascript, что означает, что BS не справится с этой задачей. Когда я упрощаю код, чтобы вернуть весь суп, он должен вернуть все html. Итак, следующее:
from bs4 import BeautifulSoup
import requests
import os
import re
import sys
URL = "https://www.douglascollege.ca/programs-courses/catalogue/programs"
r = requests.get(URL)
coverpage = r.content
soup = BeautifulSoup(coverpage, 'html5lib')
print(soup)
дает
<html><head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr/><center>Microsoft-Azure-Application-Gateway/v2</center>
</body></html>
Вот почему вы не получаете никаких <a>
, потому что их нет в супе.
Если URL-адрес изменен на что-то другое, например:
URL = "https://www.tutorialspoint.com/gensim/gensim_creating_lda_mallet_model.htm"
URL-адрес возвращает html страницы, вызывая суп, а затем есть <a>
, которые нужно получить.
При просмотре источника страницы, которую вы пытаетесь очистить, появляется эта строка
<script src="/-/media/A1FA8497F6534B7D915442DEC3FA6541.ashx?636948345000000000"></script><script src="/-/media/ACA0B6DEC2124962B48341E8092B8B4D.ashx?636948345010000000"></script><script src="/-/media/68BA4C1C2A0D494F97E7CD7D5ECE72B0.ashx?637036665710000000"></script>
<!-- Javascripts goes between here -->
Наряду с несколькими другими упоминаниями javascript на странице. Как обсуждалось в этом вопросе , вы можете попробовать Selenium, а не BS. Удачи.