Пишу код для парсинга https://apitest.arizona-rp.com/mon/fraction/11/9. Паршу с помощью PyQt5. Вся проблема в том, что при первом вызове парсинга этого сайта код работает на отлично, но если вызвать метод 2 раза, то код выполняется только первый раз, а на второй раз выкидывает ошибку
Process finished with exit code -1073741819 (0xC0000005).
Помогите с решением этой проблемы, пожалуйста. Код прилагается:
Класс парсера:
Парсинг сайта:
Process finished with exit code -1073741819 (0xC0000005).
Помогите с решением этой проблемы, пожалуйста. Код прилагается:
Класс парсера:
Python:
from PyQt5.QtWebEngineWidgets import QWebEnginePage
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
import sys
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.toHtml(self.Callable)
print('Load finished')
def Callable(self, html_str):
self.html = html_str
self.app.quit()
Python:
import bs4 as bs
from page import Page
organizations = {"1" : "Полиция ЛС", "2" : "Областная полиция", "3" : "ФБР", "4": "Полиция СФ", "5" : "Больница ЛС", "6" : "Правительство", "7" : "Тюрьма Строгого Режима", "8" : "Больница СФ", "9" : "Автошкола", "10" : "СМИ ЛС",
"11" : "Грув стрит", "12" : "Вагосы", "13" : "Балласы", "14" : "Ацтеки", "15" : "Рифа", "16" : "Русская мафия", "17" : "Якудза", "18" : "ЛКН", "19" : "Байкеры", "20" : "Армия ЛС",
"21" : "Центральный Банк", "22" : "Больница ЛВ", "23" : "СВАТ", "24" : "СМИ ЛВ", "25" : "Ночные волки", "26" : "СМИ СФ", "27" : "Армия СФ", "28" : "Темное Братство", "29" : "Страховая Компания"
}
def getMessageAboutOrg(orgId):
page = Page("https://apitest.arizona-rp.com/mon/fraction/11/" + str(orgId))
soup = bs.BeautifulSoup(page.html, 'html.parser')
table = soup.find("tbody")
countOnline = 0
isLeaderOnline = False
leader = ""
deputy = []
countOffline = 0
for tr in table.find_all("tr"):
if "_" in str(tr.find_all("td")[1]) and not str(tr.find_all("td")[3]).replace("<td>", "").replace("</td>", "") == "Сейчас играет":
countOffline += 1
if "_" in str(tr.find_all("td")[1]) and str(tr.find_all("td")[3]).replace("<td>", "").replace("</td>","") == "Сейчас играет" and str(tr.find_all("td")[2]).replace("<td>", "").replace("</td>","") == "Лидер":
isLeaderOnline = True
if str(tr.find_all("td")[2]).replace("<td>", "").replace("</td>","") == "Лидер":
if leader == "":
leader = str(tr.find_all("td")[1]).replace("<td>", "").replace("</td>","")
if "_" in str(tr.find_all("td")[1]) and str(tr.find_all("td")[2]).replace("<td>", "").replace("</td>", "") == "9":
nick = str(tr.find_all("td")[1]).replace("<td>", "").replace("</td>","")
isOnline = False
if str(tr.find_all("td")[3]).replace("<td>", "").replace("</td>","") == "Сейчас играет":
isOnline = True
deputy.append([nick, isOnline])
if "_" in str(tr.find_all("td")[1]) and str(tr.find_all("td")[3]).replace("<td>", "").replace("</td>", "") == "Сейчас играет":
countOnline += 1
message = "Информация об организации " + "\"" + organizations[str(orgId)] + "\"\nОнлайн организации - " + str(countOnline) + "\nОффлайн организации - " + str(countOffline) + "\nЛидер организации:\n" + leader + " - "
if isLeaderOnline:
message = message + "Онлайн\nЗаместители:\n"
else:
message = message + "Оффлайн\nЗаместители:\n"
for deput in deputy:
if deput[1]:
message = message + deput[0] + " - " + "Онлайн\n"
else:
message = message + deput[0] + " - " + "Оффлайн\n"
return message