====ua-football.com====
Парсер забирает новости со страницы [[https://www.ua-football.com/sport|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()