Привет!
Искал возможности для запуска JS из html и нашел замечательный вариант, намного проще всяких selenium и тд Используется библиотека PyQt5
Вот собственно код
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()
Все отлично работает, НО только при сосздании ПЕРВОГО объекта класса Client. При создании следующего объекта (ну нужно следующую страницу парсить), выходит ошибка Process finished with exit code 139 (interrupted by signal 11: SIGSEGV). Хотя программа завершается и дает результат, но все же эта ошибка и вскакивает окно, что программа crash.
MAC OS Sierra