저는 Python을 처음 사용하면서도 배우려고하지만이 문제를 처리 할 수 없습니다. 내가 무한 루프에서 클래스에있는 몇 가지 기능을 실행하고 싶습니다. QApplication이기 때문에 QTimer로해야한다는 것을 배웠습니다. 그러나이를 수행하는 방법을 모색 할 때 나는 대안을 찾지 못했습니다. 일반적인 해결책은 다음과 같습니다.QTimer를 사용하여 infinte 루프에서 함수를 실행하십시오.
timer = QTimer()
timer.timeout.connect(function)
timer.start(60000)
그러나이 코드를 코드에 삽입해도 아무런 차이가 없습니다. 함수, 클래스 등 아래에 삽입하려고했지만 결과를 얻을 수 없습니다. 내 루프 기능은 다음과 같습니다.
__author__ = 'pc'
import requests
from bs4 import BeautifulSoup
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
import sqlite3
import sys, getopt, time
from PyQt5.QtCore import QTimer
records = []
def scrape_page(url, html):
soup = BeautifulSoup(html, 'html.parser')
data = soup.find('div', class_='tablo_dual_board')
try:
datas = data.text.splitlines()
datas1 = list(filter(None, datas))
records.append(datas1)
except:
pass
def process_records():
# add record to database ...
print('process records:', len(records))
def generate_urls():
onexurl = "https://1xbahis19.com/en/live/Football/"
reply = requests.get(onexurl)
soup = BeautifulSoup(reply.content, "html.parser")
income = soup.find_all("ul", {"id":"games_content"})
links = soup.find_all("a", {"class": "c-events__name"})
urls = []
for matchlink in links:
urls.append("https://1xbahis19.com/en/"+(matchlink.get("href")))
return urls
class WebPage(QtWebEngineWidgets.QWebEnginePage):
def __init__(self):
super(WebPage, self).__init__()
self.loadFinished.connect(self.handleLoadFinished)
def start(self, urls):
self._urls = iter(urls)
self.fetchNext()
def fetchNext(self):
try:
url = next(self._urls)
except StopIteration:
return False
else:
self.load(QtCore.QUrl(url))
return True
def processCurrentPage(self, html):
scrape_page(self.url().toString(), html)
if not self.fetchNext():
process_records()
print(records)
QtWidgets.qApp.quit()
def handleLoadFinished(self):
self.toHtml(self.processCurrentPage)
app = QtWidgets.QApplication(sys.argv)
webpage = WebPage()
webpage.start(generate_urls())
timer = QTimer()
timer.timeout.connect(WebPage)
timer.start(60000)
app.exec_()
아무도 도와 줄 수 없습니까?
어디서 당신은 타이머를 사용 했습니까? – eyllanesc
@eyllanesc 나는 여기에서 배웠다. (https://stackoverflow.com/questions/25080561/pyqt-application-and-infinite-loop) stacoverflow posts –