Javascript 在flask web app中加载页面,同时使用selenium抓取另一个网站
我正在努力开发一个我想制作的应用程序,这是一个web应用程序,它将使用带有chromedriver的selenium包刮去其他网站。 我正在初级操作系统上使用python 3.7。 如果我不包括加载页面,一切都正常,即使我还没有把它放到网上,所以我不确定,但我的问题是,我想让爬行无头,没有沙箱,而在我的应用程序中有等待页面。 我希望在工作完成后也能呈现一个成功的html模板 我在stackoverflow上搜索答案,但我无法使我的东西正常工作。(如有重复,恕不另行通知) 我发现的一件事是路易斯·奥基对这个问题的回答:,似乎OP可以解决他的问题。 但是我不能。 我根本不懂javascript,所以如果问题出在这里,也许你会发现这很简单 python代码:Javascript 在flask web app中加载页面,同时使用selenium抓取另一个网站,javascript,python,ajax,selenium,flask,Javascript,Python,Ajax,Selenium,Flask,我正在努力开发一个我想制作的应用程序,这是一个web应用程序,它将使用带有chromedriver的selenium包刮去其他网站。 我正在初级操作系统上使用python 3.7。 如果我不包括加载页面,一切都正常,即使我还没有把它放到网上,所以我不确定,但我的问题是,我想让爬行无头,没有沙箱,而在我的应用程序中有等待页面。 我希望在工作完成后也能呈现一个成功的html模板 我在stackoverflow上搜索答案,但我无法使我的东西正常工作。(如有重复,恕不另行通知) 我发现的一件事是路易斯·
@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中为无)
如果这对某人有帮助,那么我很高兴