Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
python:parsers:ua-footbal [2020/01/27 00:37] werwolf |
python:parsers:ua-footbal [2023/01/12 12:18] (текущий) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====ua-football.com==== | ====ua-football.com==== | ||
| - | Парсер заюирает новости со страницы [[https://www.ua-football.com/sport|ua-football.com/sport]] | + | Парсер забирает новости со страницы [[https://www.ua-football.com/sport|ua-football.com/sport]] |
| <code python> | <code python> | ||
| # https://pypi.org/project/beautifulsoup4/ - установить сторонний пакет с помощью пакетного менеджера pip | # https://pypi.org/project/beautifulsoup4/ - установить сторонний пакет с помощью пакетного менеджера pip | ||
| Строка 63: | Строка 63: | ||
| ............ | ............ | ||
| </sxh> | </sxh> | ||
| + | |||
| + | ====ООП версия парсера==== | ||
| + | |||
| + | <code python> | ||
| + | # 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() | ||
| + | |||
| + | </code> | ||