xiaooooooo
发表于 2023-8-8 22:50:07
本帖最后由 xiaooooooo 于 2023-8-8 23:10 编辑
wyn665817 发表于 2023-8-8 16:48
看不懂我的意思吗。。。
你只测了服务端和客户端内部的速度
那客户端到服务端的速度和服务端到客户端的速 ...
我用了楼上大佬教的方法,这个t3-start应该是客户端回传到服务端的速度了,大概2s不到
start时间是油猴脚本第一行,end时间是油猴脚本发送xhr前的时间戳,spend_time=end-start, t3是在onload里面的时间戳
GM_xmlhttpRequest({
method: "POST",
url: monkey_url,
data : JSON.stringify({'数据':dataList,'从发送请求到接收到该条数据所花费时间':spend_time + '秒'}),
onload: function(response) {
//这里写处理函数
console.log(response);
console.log(dataList);
const t3 = Date.now();
console.log(t3-start);
//window.close();
}
});
我之所以用掐表的方式计时,因为我统计的是【按下鼠标】到【pycharm接收到数据】的时间,这个时间我不知道该怎么算。如果我直接把鼠标点击的动作写死在油猴脚本里面的话,我又没法对筛选条件进行自定义了。
wyn665817
发表于 2023-8-9 15:01:43
本帖最后由 wyn665817 于 2023-8-9 15:06 编辑
xiaooooooo 发表于 2023-8-8 22:50
我用了楼上大佬教的方法,这个t3-start应该是客户端回传到服务端的速度了,大概2s不到
start时间是油猴脚 ...
也别客户端服务端了,分不清楚你指的是哪个。
按照前端和后端来描述吧。
t3-start是信息从前端脚本运行到前端发送消息再到前端接收到后端回信的时间差。
wyn665817
发表于 2023-8-9 15:05:08
xiaooooooo 发表于 2023-8-8 22:50
我用了楼上大佬教的方法,这个t3-start应该是客户端回传到服务端的速度了,大概2s不到
start时间是油猴脚 ...
统计的是【按下鼠标】到【pycharm接收到数据】的时间也很简单
按下鼠标触发的事件同时记录下时间戳
pycharm接收到数据的时候也记录下时间戳
这些都能做到,不知道你有啥疑问。。。
szzxc
发表于 2023-8-10 14:37:14
szzxc 发表于 2023-8-7 18:58
所以油猴才是客户端,相当浏览器提供数据给服务器。。。Py运行的不是有post接收吗,这就是服务端 ...
可是我在第楼主的贴子第一楼是这样写的, 我在服务端(油猴脚本),以及客户端(py脚本)
szzxc
发表于 2023-8-10 17:42:58
具体是哪个页面的数据?
xiaooooooo
发表于 2023-8-10 21:59:41
wyn665817 发表于 2023-8-9 15:05
统计的是【按下鼠标】到【pycharm接收到数据】的时间也很简单
按下鼠标触发的事件同时记录下时间戳
pycha ...
emmm 好吧可能是我没表达清楚
总的来说 我的问题是想要利用如下两个脚本 实现鼠标一点就能获取数据的效果 【重要的是尽可能快】
脚本一:油猴脚本
https://scriptcat.org/script-show-page/1209
脚本二:py脚本
from flask_cors import CORS
from flask import Flask, request
from redis import StrictRedis
import logging
import time
# logging.basicConfig(level=logging.ERROR, format='')
app = Flask(__name__)
redisCli = StrictRedis(
host='127.0.0.1',
port=6379,
db=0
)
@app.route('/airLines', methods=['POST'])
def airLines():
if request.method == 'POST':
time_start = time.time()# 开始计时
form_data = request.get_data()
redisCli.rpush('listPage', form_data)# 推到redis列表页
print(form_data.decode())
time_end = time.time()# 结束计时
time_c = time_end - time_start# 运行所花时间
print('time cost', time_c, 's')
return form_data
if __name__ == '__main__':
CORS(app, supports_credentials=True)# 允许跨域
app.run(host='127.0.0.1', port=8883, debug=False)
xiaooooooo
发表于 2023-8-10 22:14:20
szzxc 发表于 2023-8-10 17:42
具体是哪个页面的数据?
OK 我承认我对客户端与服务端的定义混乱
具体页面大佬看下这个 https://www.jetstar.com/cn/zh/home?adults=1&children=0&destination=SYD&flexible=1&flight-type=1&infants=0&origin=MEL&selected-departure-date=19-08-2023&tab=1
szzxc
发表于 2023-8-11 18:39:42
但是实测下来(掐秒表)整个数据获取过程需要接近10s, 整个过程是指哪里时间计算,我试了一下好像不用,等待网页打开耗的时间多,打开后马上就可以python服务接收数据了。
szzxc
发表于 2023-8-11 18:48:55
提交到python 服务端差不多每条数据 "从发送请求到接收到该条数据所花费时间":"0.035秒"
xiaooooooo
发表于 2023-8-11 21:13:38
szzxc 发表于 2023-8-11 18:39
但是实测下来(掐秒表)整个数据获取过程需要接近10s, 整个过程是指哪里时间计算,我试了一下好像不用,等 ...
【整个过程】指的是从【鼠标点击任一个日期】到【从pycharm里面看见数据】,这个过程需要10s左右,不知道怎么优化。可能就是因为我这个抓取方法就是要等待元素渲染出来?