Инструменты пользователя

Инструменты сайта


python:parsers:ua-footbal

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
python:parsers:ua-footbal [2020/01/27 00:32]
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]]
 <code python> <code python>
 # https://​pypi.org/​project/​beautifulsoup4/​ - установить сторонний пакет с помощью пакетного менеджера pip # https://​pypi.org/​project/​beautifulsoup4/​ - установить сторонний пакет с помощью пакетного менеджера pip
Строка 38: Строка 39:
     f.write(f'​Новость №: {i}\n\n Название:​ {item["​title"​]} \n Описание:​ {item["​desc"​]}\n Ссылка:​ {item["​link"​]}\n\n*********\n\n'​)     f.write(f'​Новость №: {i}\n\n Название:​ {item["​title"​]} \n Описание:​ {item["​desc"​]}\n Ссылка:​ {item["​link"​]}\n\n*********\n\n'​)
     i += 1     i += 1
 +</​code>​
 +
 +результат:​
 +
 +<sxh text;​title:​news.txt>​
 +Новость №: 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
 + ​............
 +</​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>​ </​code>​
python/parsers/ua-footbal.1580074322.txt.gz · Последние изменения: 2023/01/12 12:16 (внешнее изменение)