问题描述
我写了一个简单的解析器。我想用图形来实现它。但是有一个问题:我不知道该怎么做。
我会说下面的,我找到了进度条的代码。你能帮忙把程序中的代码和进度条码连接起来,让它们正常工作吗?好吧,或者告诉我往哪个方向移动。 解析器代码:
import requests
from bs4 import BeautifulSoup
import csv
import time
CSV = 'item.csv'
HOST = 'https://www.goodfon.ru'
URL = 'https://www.goodfon.ru/'
HEADERS = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,'
'application/signed-exchange;v=b3;q=0.9','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/88.0.4324.152 '
'YaBrowser/21.2.3.106 Yowser/2.5 Safari/537.36 '
}
def get_html(url,params=''):
r = requests.get(url,headers=HEADERS,params=params)
return r
def get_content(html):
soup = BeautifulSoup(html,'html.parser')
items = soup.find_all('div',class_='wallpapers__item')
img = []
for item in items:
img.append(
{
'url': item.find('div',class_='wallpapers__item__wall').find('a').get('href'),'size': item.find('div',class_='wallpapers__item__size').find('small').text,'permission': item.find('div',class_='wallpapers__item__size').find('span').text,}
)
return img
def save_doc(items,path):
with open(path,'w',encoding='utf8',newline='') as file:
writer = csv.writer(file,delimiter=',')
writer.writerow(['Ссылка','Разрешение','Формат'])
for item in items:
writer.writerow([item['url'],item['size'],item['permission']])
def parser():
time_begin = time.time()
PATH = int(input('Укажите количество страниц для парсинга: ').strip())
html = get_html(URL)
if html.status_code == 200:
img = []
for page in range(1,PATH + 1):
print(f'Парсим страницу № {page}')
html = get_html(URL,params='index-' + str(page) + '.html')
img.extend(get_content(html.text))
save_doc(img,CSV)
print(img)
else:
print("Error!")
time_end = time.time()
time_result = round(time_end - time_begin,3)
time_sec = round(time_result / 60,3)
print(f'На парсинг {PATH} страниц было затрачено {time_result} секунд.({time_sec} минут/ы)')
parser()
进度条码:
# importing libraries
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
import time
class Example(QWidget):
def __init__(self):
super().__init__()
# calling initUI method
self.initUI()
# method for creating widgets
def initUI(self):
# creating progress bar
self.pbar = QProgressBar(self)
# setting its geometry
self.pbar.setGeometry(30,40,200,25)
# creating push button
self.btn = QPushButton('Start',self)
# changing its position
self.btn.move(40,80)
# adding action to push button
self.btn.clicked.connect(self.doAction)
# setting window geometry
self.setGeometry(300,300,280,170)
# setting window action
self.setWindowTitle("Python")
# showing all the widgets
self.show()
# when button is pressed this method is being called
def doAction(self):
# setting for loop to set value of progress bar
for i in range(101):
# slowing down the loop
time.sleep(0.05)
# setting value to progress bar
self.pbar.setValue(i)
# main method
if __name__ == '__main__':
# create pyqt5 app
App = QApplication(sys.argv)
# create the instance of our Window
window = Example()
# start the app
sys.exit(App.exec())
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)