抓取ajax动态网页java(实现成果实现思路我主要是借鉴了博客的思路)

优采云 发布时间: 2021-11-23 23:22

  抓取ajax动态网页java(实现成果实现思路我主要是借鉴了博客的思路)

  取得成果

  

  实现思路

  我主要借鉴了这个博客的想法

  让我简要描述一下他的想法。他的前端使用ajax异步请求。一种用于获取冗长的数据。比如我要在后台运行一千个统计,这需要很长时间。另一种是周期性的ajax。每隔一段时间去后台访问一下数据。后台巧妙的部分是打开一个全局变量来存储程序的运行状态。伪代码如下

  全局变量s

主函数(前端请求这个链接需要比较长的时间才能返回数据):

s=0

''''

后台处理数据

''''

s=10

''''

后台处理数据

''''

如此重复

最后返回数据的时候s=100

辅助函数:

返回s的值

  这是他的实现思路,就是通过全局变量来检测主函数,告知辅助函数主函数跑了哪一步。

  两个ajxa用的很巧妙,很简单的实现方式

  他山的石头可以用来做玉

  他想法的问题是没有考虑并发,同一个全局变量s不能在多个用户下使用。

  我的想法之一

  众所周知,每个用户都有一个独立的会话,那么把这个全局变量保存在会话中就可以了,互不干扰。

  思路肯定没问题,但是被ajax机制坑了。ajax异步请求的时候,不执行后台函数的情况下是无法更新session的。这导致辅助功能无法访问尚未完成主功能的会话。

  我的第二个想法

  然后会话不起作用。我只是将全局变量更改为地图。前端的两个ajax在访问后台的时候,带了一个过去的随机数,作为map的key,全局变量作为map的value,这样随机数之间的冲突就很小了。可以,后台执行进度可以并发访问

  前端伪代码

  ajax1:

异步访问主函数

传递一个随机数seed

等待数据返回并显示

杀死定时器

定时器:

ajax2:

异步访问辅助函数

传递一个随机数seed

拿到后台map中的全局变量

更改进度条显示为全局遍历的值

  使用flask框架踩到的一些坑

  一、开启flask的多线程

  第二阶段是单线程,前端异步访问,后端在处理main函数的时候没时间考虑辅助函数。

   app.run(debug=True, threaded=True)

  对于前端表单,JavaScript处理完后返回false,否则JavaScript会一次提交到后端,html表单再次提交。. .

  在前端表单表单中设置pattern值后,先由JavaScript处理click事件,然后再处理pattern。因此,JavaScript 也必须正则匹配。如果成功,它将返回false。如果失败,它将返回true。图案被处理。输入标签自带前端提示

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线