Skip to content

Commit

Permalink
优化抓取频率,尝试使用HTML进行输出
Browse files Browse the repository at this point in the history
  • Loading branch information
deadlyedge committed Apr 25, 2019
1 parent 4b61ff3 commit 4ff3a82
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 80 deletions.
6 changes: 6 additions & 0 deletions pure-css-table/js/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
function print_return(n) {
console.log(n)
}

eel.python_function()(print_return);

11 changes: 11 additions & 0 deletions pure-css-table/server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import eel
import time

eel.init('web')

@eel.expose
def getTime():
return time.strftime('%c')


eel.start('main.html')
17 changes: 17 additions & 0 deletions pure-css-table/web/main.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
<script type="text/javascript" src="/eel.js"></script>
<script>
async function getTime() {
let value = await eel.getTime()();
alert(value);
}

</script>
</head>
<body>
<button onclick="getTime()">Click to get time</button>
</body>
</html>
34 changes: 24 additions & 10 deletions zhibo8_v3.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,32 @@ def getHtml(url="https://www.zhibo8.cc/"):
return req.text


def splitTeamInfo(gameInfoList):
nonTeam = ['欧联杯', '足球', '篮球', 'NBA', 'CBA', '英超', '西甲', '荷甲', '待定', '中超', '亚冠', '欧冠',
'中甲', '足协杯']
giveup = ['篮球', '足球']
gameInfo = gameInfoList.split(',')
temp1 = [i for i in gameInfo if i not in nonTeam and i not in giveup]
temp2 = [i for i in gameInfo if i in nonTeam and i not in giveup]
gameInfoListSorted = temp1 + temp2
return gameInfoListSorted


def showTeam(*args):
showList = []
showList = showListReady = []
targetRE = '<li label="(.*?)" id="saishi.*?data-time="(.*?)".*?">(.*?)</a>'
results = re.findall(targetRE, getHtml(), re.S)

for team in args:
targetRE = '<li label="(.*?)" id="saishi.*?data-time="(.*?)".*?">(.*?)</a>'
results = re.findall(targetRE, getHtml(), re.S)
for result in results:
if team in result[0] and result not in showList:
resultReform = [result[1], result[0], result[2]]
for result in results:
resultReform = [result[1], result[0], result[2]]
for team in args:
if team in resultReform[1] and resultReform not in showList:
showList.append(resultReform)
showListSorted = sorted(showList, key=lambda s: s[0])
return showListSorted
# showListSorted = sorted(showList, key=lambda s: s[0])
# for game in range(len(showList)): # 整理成分组的list,[第一组时间][第二组比赛信息][第三组转播信息]
# showListReady[game] = [showList[game][0].split()] + [splitTeamInfo(showList[game][1])] + \
# [showList[game][2].split()]
return showList


class Widget(QtWidgets.QWidget):
Expand Down Expand Up @@ -63,6 +77,7 @@ def __init__(self, parent=None):
vLayout.addLayout(hLayout)
self.pandasTv = QtWidgets.QTableView(self)
self.pandasTv.setSelectionBehavior(1)
self.pandasTv.setHorizontalScrollBarPolicy(1)
self.pandasTv.setAlternatingRowColors(True)
self.pandasTv.setShowGrid(False)
self.pandasTv.verticalHeader().setVisible(False)
Expand All @@ -75,7 +90,6 @@ def __init__(self, parent=None):


if __name__ == '__main__':

showListReady = showTeam('国安', '利物浦', '阿森纳', '热刺', '勇士', '火箭', '皇家马德里')
showDF = pandas.DataFrame(showListReady, columns=['time', 'game', 'broadcast'])
app = QtWidgets.QApplication(sys.argv)
Expand Down
99 changes: 29 additions & 70 deletions zhibo8_v4.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import sys
import re, requests, pandas
from PyQt5 import QtWidgets, QtGui, QtCore
from PandasModel import PandasModel
import re, requests, eel
from jinja2 import Environment, PackageLoader

env = Environment(loader=PackageLoader(__name__, 'web'))
template = env.get_template('main_template.html')

def getHtml(url="https://www.zhibo8.cc/"):
req = requests.get(url)
Expand All @@ -20,75 +20,34 @@ def getHtml(url="https://www.zhibo8.cc/"):
return req.text


def showTeam(*args):
showList = []

for team in args:
targetRE = '<li label="(.*?)" id="saishi.*?data-time="(.*?)".*?">(.*?)</a>'
results = re.findall(targetRE, getHtml(), re.S)
for result in results:
if team in result[0] and result not in showList:
resultReform = [result[1], result[0], result[2]]
showList.append(resultReform)
showListSorted = sorted(showList, key=lambda s: s[0])
return showListSorted
def splitTeamInfo(gameInfoList):
nonTeam = ['欧联杯', '足球', '篮球', 'NBA', 'CBA', '英超', '西甲', '荷甲', '待定', '中超', '亚冠', '欧冠',
'中甲', '足协杯']
giveup = ['篮球', '足球']
gameInfo = gameInfoList.split(',')
temp1 = [i for i in gameInfo if i not in nonTeam and i not in giveup]
temp2 = [i for i in gameInfo if i in nonTeam and i not in giveup]
gameInfoListSorted = temp1 + temp2
return gameInfoListSorted


class Widget(object):
def setupGUI(self, Form):
Form.setObjectName("zhibo8")
Form.resize(685, 500)
# self.setWindowTitle('zhibo8')
# self.setWindowOpacity(.8)
# self.setFixedSize(685, 500)
# self.setStyleSheet('QWidget{Color:#ffc66d;'
# 'Background-color:#2b2b2b;'
# 'border: 1px solid #ffc66d; border-radius:4px;}'
# 'QScrollBar:vertical{border:none;background:#2b2b2b;width:10px;'
# 'margin:0px;}'
# 'QScrollBar::handle:vertical {'
# 'background:#c9a97c; border-radius:3px;}'
# 'QScrollBar::handle:vertical:hover {'
# 'background:#ffd499; border-radius:3px;}'
# 'QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {'
# 'background: none;}'
# 'QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {'
# 'border:none; background: none;}'
# 'QTableWidget{alternate-background-color:#444;}'
# 'QTableWidget{margin:0px 5px 0px 5px;}'
# 'QTableWidget::item:hover{color:#2b2b2b;'
# 'background-color:#ffc66d;}'
# )
# vLayout = QtWidgets.QVBoxLayout(self)
# hLayout = QtWidgets.QHBoxLayout()
# vLayout.addLayout(hLayout)
myresult = [(449, u'text1', u'checkbox'), (454, u'text2', u'textbox'), (455, u'text3', u'textbox')]
self.tableWidget = QtWidgets.QTableWidget(Form)
self.tableWidget.setSelectionBehavior(1)
self.tableWidget.setAlternatingRowColors(True)
self.tableWidget.setShowGrid(False)
self.tableWidget.verticalHeader().setVisible(False)
self.tableWidget.horizontalHeader().setVisible(False)
self.tableWidget.setColumnCount(3)
# vLayout.addWidget(self.pandasTv)
for row, result in enumerate(myresult):
self.tableWidget.insertRow(self.tableWidget.rowCount())
for column, value in enumerate(result):
item = QtWidgets.QTableWidgetItem(str(value))
print(value)
self.tableWidget.setItem(row, column, item)
# model = PandasModel(showDF)
# self.pandasTv.setModel(model)
header = self.tableWidget.horizontalHeader()
header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
def showTeam(*args):
showList = showListReady = []
targetRE = '<li label="(.*?)" id="saishi.*?data-time="(.*?)".*?">(.*?)</a>'
results = re.findall(targetRE, getHtml(), re.S)

for result in results:
resultReform = [result[1], result[0], result[2]]
for team in args:
if team in resultReform[1] and resultReform not in showList:
showList.append(resultReform)
# showListSorted = sorted(showList, key=lambda s: s[0])
for game in range(len(showList)): # 整理成分组的list,[第一组时间][第二组比赛信息][第三组转播信息]
showListReady[game] = [showList[game][0].split()] + [splitTeamInfo(showList[game][1])] + \
[showList[game][2].split()]
return showListReady


if __name__ == '__main__':

showListReady = showTeam('国安', '利物浦', '阿森纳', '热刺', '勇士', '火箭', '皇家马德里')
showDF = pandas.DataFrame(showListReady, columns=['time', 'game', 'broadcast'])
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Widget()
MainWindow.show()
sys.exit(app.exec_())
print(template.render(showListReady))

0 comments on commit 4ff3a82

Please sign in to comment.