Пример парсера новостей на PyQT

Posted by


Программирование на PyQt может быть очень полезным и интересным способом создать приложение с графическим интерфейсом. В этом туториале мы рассмотрим как создать парсер новостей с использованием PyQt.

Шаг 1: Установка PyQt
Прежде чем начать работу с PyQt, нужно установить его на ваш компьютер. Для этого откройте терминал и выполните команду:

pip install PyQt5

Шаг 2: Создание основного окна
Создадим основное окно для нашего парсера новостей. Для этого создайте файл parser.py и добавьте следующий код:

import sys
from PyQt5.QtWidgets import QApplication, QWidget

class ParserWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Новостной парсер")
        self.setGeometry(100, 100, 800, 600)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = ParserWindow()
    window.show()
    sys.exit(app.exec_())

Шаг 3: Добавление элементов интерфейса
Теперь давайте добавим элементы интерфейса для нашего парсера новостей. Для этого добавьте следующий код в метод init класса ParserWindow:

from PyQt5.QtWidgets import QHBoxLayout, QVBoxLayout, QLabel, QPushButton, QTextEdit

class ParserWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Новостной парсер")
        self.setGeometry(100, 100, 800, 600)

        self.layout = QVBoxLayout()

        self.label = QLabel("Введите URL новостного сайта:")
        self.layout.addWidget(self.label)

        self.url_input = QTextEdit()
        self.layout.addWidget(self.url_input)

        self.parse_button = QPushButton("Парсить новости")
        self.parse_button.clicked.connect(self.parse_news)
        self.layout.addWidget(self.parse_button)

        self.news_output = QTextEdit()
        self.news_output.setReadOnly(True)
        self.layout.addWidget(self.news_output)

        self.setLayout(self.layout)

    def parse_news(self):
        # Здесь будет код для парсинга новостей
        pass

Шаг 4: Парсинг новостей
Теперь давайте добавим код для парсинга новостей с введенного пользователем URL. Для этого используем библиотеку requests для отправки запроса на сайт и BeautifulSoup для парсинга HTML страницы. Добавьте следующий код в метод parse_news:

import requests
from bs4 import BeautifulSoup

def parse_news(self):
        url = self.url_input.toPlainText()
        response = requests.get(url)
        html = response.text

        soup = BeautifulSoup(html, 'html.parser')
        news_titles = soup.find_all('h2')

        news_list = [title.get_text() for title in news_titles]

        self.news_output.setPlainText('n'.join(news_list))

Шаг 5: Запуск приложения
Теперь вы можете запустить ваш парсер новостей, выполните python parser.py в терминале и введите URL новостного сайта, нажмите на кнопку "Парсить новости" и вы увидите заголовки новостей на странице.

Это был пример, как создать парсер новостей с использованием PyQt. Вы можете расширить функционал приложения, добавив сохранение новостей в файл, добавлением возможности парсить другие типы данных и т.д. Надеюсь этот туториал был полезен и вы научились создавать приложения на PyQt.

0 0 votes
Article Rating
17 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@maximus2088
1 month ago

Привет дружище !!! Вопрос такой , а можно ли сделать такой парсер , чтобы искал из динамического списка ( списка тхт ) новости со всех источников. С возможностью разделения по датам? Например : хеш : "Путин одобрил" искать по датам 17.10.18. ; за всё время; за неделю ; за месяц… Подскажи пожалуйста !

@potter062
1 month ago

Как сделать русский интерфейс у дизайнера а то у меня на английском

@user-lv4nk7sb2l
1 month ago

Спасибо тебе огромное!

@anoname10
1 month ago

Аа бльааа, пикьютииии. Уууууууууъ сссука

@nresident2734
1 month ago

Автор можете написать ссылку на ваш новый сайт?

@ilyaskibirov746
1 month ago

Привет! можно исходник парсера новостей пожалуйста, на твоем новом сайте не нашел. Благодарю за ранее!

@nresident2734
1 month ago

Спасибо тебе за видео, давай ещё что нибудь новенькое, с меня подписка и лайк)

@StoneWeaver_RU
1 month ago

В целом, видео неплохое, замечание одно – регулярка и потом сплит. Это жесть. Вся ссылка берется в регулярку. На месте href – первую группу ставим, и на месте самого текста ссылки – вторую. И сплит не нужен будет.

@user-uc9mg3ws6p
1 month ago

Откуда копировать код который выставляется на bat файл?

@paulboss5524
1 month ago

Покамись

@nngogol244
1 month ago

Сохраните себе время.
Вот мое видео, где я за 5 минут все объясняю: https://youtu.be/iw6q-eBm630
Посмотрите это, а не это видео.

@AxeKnifeGun
1 month ago

Ухи режут эти "ссылоЧКИ, массивЧИКИ, заголовоЧКИ, списоЧКИ, строчеЧКИ и тд итп" … ебать! Ну ты чо, камон!!!
P.S.
А в остальном всё гуд. Спасссссибо!!! ))

@user-de6cj2rk3m
1 month ago

Добрый день. Я учусь писать код. Хочу парсить новости. Застрял на первой части вашего видео, где после конвертации в формат *.py вносятся незначительные изменения в news.py и запускается. Не хочет запускаться файл, выдает ошибку:
Traceback (most recent call last):
File "news.py", line 24, in <module>
myapp = MyWin()
File "news.py", line 9, in _init_
self.ui = Ui_MainWindow()
NameError: name 'Ui_MainWindow' is not defined

Работаю в pycharm, пробовал в IDLE Pythonю и через командную строку py news.py. Пакеты установил, в виртуальной среде пробовал запустить, пакеты для виртуальной среды тоже установил. Даже Python 2.7 устанавливал, а потом снес. Ну не хочет запускаться. Взял файл готовый с сайта вашего, но ошибка все та же. Бился больше 2-х часов. Расстроен.

@obehobeh9984
1 month ago

Без дополнительных танцев, из PyQT нельзя в код питона все это переводить?
Написание отдельных примочек конвертации, потом шаблоны и т.д. как-то напрягает.

@user-nq3nn8vy9f
1 month ago

Спасибо большое!!

@electronic3251
1 month ago

Чувак 21 век на дворе 2017 год Apple разработала и запустила в продакшен уже ArKit. ты что в "Worlde" пишешь код? Скачай PyCharm ну или Atom ну или Sublim, это сейчас все бесплатно! Ну не возможно смотреть уроки глаза выпадают от этого синтаксиса. Братишка переходи на новые технологии хотя они уже даже устарели!

@Vam0
1 month ago

from PyQt5 import QtCore, QtGui, QtWidgets
ImportError: DLL load failed: Не найдена указанная процедура.
>>>