Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在flask web app中加载页面,同时使用selenium抓取另一个网站_Javascript_Python_Ajax_Selenium_Flask - Fatal编程技术网

Javascript 在flask web app中加载页面,同时使用selenium抓取另一个网站

Javascript 在flask web app中加载页面,同时使用selenium抓取另一个网站,javascript,python,ajax,selenium,flask,Javascript,Python,Ajax,Selenium,Flask,我正在努力开发一个我想制作的应用程序,这是一个web应用程序,它将使用带有chromedriver的selenium包刮去其他网站。 我正在初级操作系统上使用python 3.7。 如果我不包括加载页面,一切都正常,即使我还没有把它放到网上,所以我不确定,但我的问题是,我想让爬行无头,没有沙箱,而在我的应用程序中有等待页面。 我希望在工作完成后也能呈现一个成功的html模板 我在stackoverflow上搜索答案,但我无法使我的东西正常工作。(如有重复,恕不另行通知) 我发现的一件事是路易斯·

我正在努力开发一个我想制作的应用程序,这是一个web应用程序,它将使用带有chromedriver的selenium包刮去其他网站。 我正在初级操作系统上使用python 3.7。 如果我不包括加载页面,一切都正常,即使我还没有把它放到网上,所以我不确定,但我的问题是,我想让爬行无头,没有沙箱,而在我的应用程序中有等待页面。 我希望在工作完成后也能呈现一个成功的html模板

我在stackoverflow上搜索答案,但我无法使我的东西正常工作。(如有重复,恕不另行通知) 我发现的一件事是路易斯·奥基对这个问题的回答:,似乎OP可以解决他的问题。 但是我不能。 我根本不懂javascript,所以如果问题出在这里,也许你会发现这很简单

python代码:

@app.route('/auto_connect/',methods=[“GET”,“POST”])
def connect():
如果会话['mail']!=无:
如果request.method==“POST”:
会话['job']=request.form['job']
返回重定向(url\u用于('process',fun='auto\u connect'))
返回渲染模板('auto\u connect.html')
返回重定向(url_用于('login'))
@app.route(“/process/”,方法=['GET','POST'])
def流程(乐趣,*args):
如果fun==“自动连接”或fun==“自动应用”:
如果request.method==“GET”:
返回渲染模板('wait.html',fun=fun)
如果request.method==“POST”:
打印(‘测试’)
如果fun==“自动连接”:
自动连接器(会话['mail']、会话['password']、会话['job'])
返回“完成”
elif fun==“自动应用”:
自动应用程序(会话['mail']、会话['password']、会话['job']、会话['location'])
返回“完成”
其他:
返回“错误”
返回“错误”
JS代码:

var request = new XMLHttpRequest();
request.open('POST', '/process/'.concat({{fun}}));

request.onload = function() {
  if (request.status === 200 && request.responseText === 'done') {
    // long process finished successfully, redirect user
    window.location = '/success/' ;
  } else {
    // ops, we got an error from the server
    alert('Something went wrong. FROM server');
  }
};

request.onerror = function() {
  // ops, we got an error trying to talk to the server
  alert('Something went wrong. TO server');
};

request.send();
正在显示加载页面,但不会开始刮削。 我希望它从js代码中的“open”POST请求开始,这是“wait.html”模板的一部分

PS:有一个flask调试器,我在我的抓取脚本的顶部放了一个打印,当我不呈现加载页面时,它会显示在终端中,但当我呈现加载页面时,它不会显示

127.0.0.1---[4/Aug/2019 02:03:20]“GET/auto_connect/HTTP/1.1”200-
127.0.0.1--[2019年8月4日02:03:22]“POST/auto_connect/HTTP/1.1”302-
127.0.0.1--[2019年8月4日02:03:22]“获取/处理/自动连接HTTP/1.1”200-

提前感谢您的回答。

我自己找到了问题的答案。 我不是一个网络程序员,所以我有时缺乏一些自动性,但通过检查我的等待页面,我发现concat函数中的JS脚本中有一个错误。 在脚本中调用
{{fun}}
而不是
{{fun}
完成了这一任务

我不理解这种行为,因为我的object fun是一个python字符串,但我阅读了jinja2文档,对我来说一切都变得清晰了,我们可以在这个链接中看到以下内容:

{{ ... }} for Expressions to print to the template output

这将打印该值,因此它不再是字符串,而是html模板中的原始文本。 (类型(打印(x))在python3 btw中为无)

如果这对某人有帮助,那么我很高兴