Что нужно сделать
Дан несложный пример HTML-страницы: examples.html (код загрузки текста сайта из html файла добавлен в файл main.py)
Изучите код этой страницы и реализуйте программу, которая получает список всех подзаголовков сайта (они заключены в теги h3
).
Ожидаемый результат:
['Latest News', 'Useful Links', 'Search', 'Heading 3']
Сделайте так, чтобы программа работала для любого сайта, где есть такие теги.
Дополнительно: найдите любой сайт, у которого в коде есть теги ‘h3’, выполните get-запрос к этому сайту при помощи библиотеки requests и получите аналогичный список всех его подзаголовков (заключенных в теги ‘h3’)
Что оценивается
- Результат вычислений корректен.
- Формат вывода соответствует примеру.
- Решение опирается на использование регулярных выражений и их методов.
- Переменные, функции и собственные методы классов имеют значащие имена, не
a
,b
,c
,d
.
import re, requests
# В данном случае запрос request.get заменен на загрзку сайта из файла html
with open('examples.html', 'r') as f:
text = f.read()
pattern = '<h3>(.+)</h3>'
result = re.findall(pattern, text)
# По итогу вы так же получаете код сайта в виде одной строки
def scraptitles(url: str) -> list:
'''Функция сохраняет HTML страницу по заданному URL
и возвращает список строк совпавших с паттерном'''
page = requests.get(url)
with open('page.html', 'wb') as file:
file.writelines(page)
with open('page.html', 'r') as file:
text = file.read()
pattern = '<h3>(.+)</h3>'
result = re.findall(pattern, text)
return result
def main():
print('Первая часть задания: ')
print(result)
print('Вторая часть: ')
url: str = input('Введите url страницы: ')
try:
print(scraptitles(url))
except:
print('Что-то сломалось.')
if __name__ == '__main__':
main()