Парсер забирает новости со страницы ua-football.com/sport
# https://pypi.org/project/beautifulsoup4/ - установить сторонний пакет с помощью пакетного менеджера pip # pip freeze - список установленных пакетов # pip install beautifulsoup4 установить пакет from bs4 import BeautifulSoup import urllib.request # Создаем запрос к сайту req = urllib.request.urlopen('https://www.ua-football.com/sport') # Читаем ответ html = req.read() # Парсим страницу, features='html.parser' - модификатор (что парсим) soup = BeautifulSoup(html, features='html.parser') # Ищем новости news = soup.find_all('li', class_='liga-news-item') results = [] for item in news: # find - выбрать эдемент, getText - получить содержимое тега(strip=True - убрать пробелы) title = item.find('span', class_='d-block').getText(strip=True) desc = item.find('span', class_='name-dop').getText(strip=True) link = item.a.get('href') results.append({ 'title': title, 'desc': desc, 'link': link } ) f = open('news.txt', 'w', encoding='utf-8') i=1 for item in results: # Запись в файл f.write(f'Новость №: {i}\n\n Название: {item["title"]} \n Описание: {item["desc"]}\n Ссылка: {item["link"]}\n\n*********\n\n') i += 1
результат:
Новость №: 1 Название: Легенда мирового баскетбола Коби Брайант погиб в авиакатастрофе4 Описание: Коби Брайант погиб - большая потеря для мирового спорта Ссылка: /sport/basketball/1580068406-legenda-mirovogo-basketbola-kobi-brayant-pogib-v-aviakatastrofe.html ********* Новость №: 2 Название: Элиз Мертенс - Симона Халеп. Анонс и прогноз на матч Australian Open Описание: Элиз Мертенс - Симона Халеп: Прогноз и анонс матча ⋉ 27.01.2020 ⋊ Australian Open онлайн на UA-Футбол Ссылка: /sport/tennis/1580058418-yeliz-martines-simona-halep-anons-i-prognoz-na-match-australian-open.html ********* Новость №: 3 ............
# https://pypi.org/project/beautifulsoup4/ - установить сторонний пакет с помощью пакетного менеджера pip # pip freeze - список установленных пакетов # pip install beautifulsoup4 установить пакет from bs4 import BeautifulSoup import urllib.request class Parser: row_html = '' html = '' results = [] def __init__(self, url, path): ''' Инициализация :param url: адрес странички :param path: Куда сохранить файл ''' self.url = url self.path = path def get_html(self): ''' Получить страничку ''' req = urllib.request.urlopen(self.url) self.row_html = req.read() self.html = BeautifulSoup(self.row_html, features='html.parser') return self def parsing(self): ''' Парсим новости ''' news = self.html.find_all('li', class_='liga-news-item') for item in news: # find - выбрать эдемент, getText - получить содержимое тега(strip=True - убрать пробелы) title = item.find('span', class_='d-block').getText(strip=True) desc = item.find('span', class_='name-dop').getText(strip=True) link = item.a.get('href') self.results.append({ 'title': title, 'desc': desc, 'link': link}) return self def save(self): ''' Сохранить список ''' with open(self.path, 'w', encoding='UTF-8') as f: i = 1 for item in self.results: # Запись в файл f.write( f'Новость №: {i}\n\n Название: {item["title"]} \n Описание: {item["desc"]}\n Ссылка: {item["link"]}\n\n*********\n\n') i += 1 def run(self): ''' Точка входа ''' self.get_html()\ .parsing()\ .save()