11
Сен
2017

Парсинг JS с помощью PyQt5 + BS4 на Python

На англоязычной версии данного ресурса нашел код с использованием библиотеки PyQt5 который запускает JS html страницы. Успешно применил его. Но совершенно не понимаю логику его работы. А чтобы двигаться дальше, нужно разобраться. Итак, сам фрагмент:

import bs4 as bs
import sys
import urllib.request
from PyQt5.QtWebEngineWidgets import QWebEnginePage
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl

class Page(QWebEnginePage):
    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebEnginePage.__init__(self)
        self.html = ''
        self.loadFinished.connect(self._on_load_finished)
        self.load(QUrl(url))
        self.app.exec_()

    def _on_load_finished(self):
        self.html = self.toHtml(self.Callable)
        print('Load finished')

    def Callable(self, html_str):
        self.html = html_str
        self.app.quit()


def main():
    page = Page('https://pythonprogramming.net/parsememcparseface/')
    soup = bs.BeautifulSoup(page.html, 'html.parser')
    js_test = soup.find('p', class_='jstest')
    print js_test.text

if __name__ == '__main__': 
    main()

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

UPD Конкретный вопрос №1: какая логика работы этого класса?

Конкретный вопрос №2: при создании 2го объекта этого класса программа вылетает с ошибкой:

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

Источник: https://ru.stackoverflow.com/questions/716990/%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3-js-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-pyqt5-bs4-%D0%BD%D0%B0-python

Тебе может это понравится...

Добавить комментарий