使用请求库从PhanomJS服务器获取响应 - javascript

我正在测试将PhantomJS服务器与Python的请求库一起使用的方法。

GET和POST请求按预期方式工作,我可以让PhantomJS服务器请求我想要的任何页面并将结果放入控制台,但是我不知道如何使用response.write(page.content)发送页面内容。请求对象没有textcontent或可用的raw内容。使response.write()正常工作的唯一方法是对响应内容进行硬编码。如果将keep-alive添加到true,则请求功能将挂起。

这是我的server.js

var webserver = require('webserver').create();
    page = require('webpage').create();

var service = webserver.listen(8080, function(request, response) {
    if (request.method == 'POST') {
        console.log(request.post);
        var content = '';
        page.open(request.post, function (status) {
            if (status !== 'success') {
                console.log('FAIL to load the address');
                response.statusCode = 200;
                response.write('Page not responding.');
            } else {
                content = page.content;
                response.statusCode = 200;
                response.write(content);
            }
        })
    } else {
        response.statusCode = 200;
        console.log(request.method == 'GET' );
        response.write('No URL provided');
    }
    response.closeGracefully();
});

Python代码很简单:

import requests

response = requests.post('http://127.0.0.1:8080, data='http://python.org')

参考方案

发送回数据后,需要关闭连接:response.close();

另外我建议在POST请求中使用一个变量,因为response.post实际上是一个对象。

var webserver = require('webserver').create();
    page = require('webpage').create();

var service = webserver.listen(8080, function(request, response) {
    if (request.method == 'POST') {
        var url = request.post.url;
        console.log(url);
        var content = '';
        page.open(url, function (status) {
            if (status !== 'success') {
                console.log('FAIL to load the address');
                response.statusCode = 200;
                response.write('Page not responding.');
                response.close();
            } else {
                content = page.content;
                response.statusCode = 200;
                response.write(content);
                response.close();
            }
        })
    } else {
        response.statusCode = 200;
        console.log(request.method == 'GET' );
        response.write('No URL provided');
        respone.close();
    }

});

然后使用url变量POST:

import requests
response = requests.post('http://127.0.0.1:8080, data = {'url':'http://python.org'})

如果我得到url(''),我该如何使用另一个URL - javascript

我是新手,正在写这篇文章,但是如果源上没有图像,那么我只有空白。有人可以告诉我,如果我正在获取背景图像,如何获取/images/no-image.jpg:url();这是我的代码:<div class="uk-clearfix uk-position-relative"> <div class="recipeb…

Javascript vs python:具有两个递归分支的函数的不同输出 - javascript

我一直在将python代码毫无问题地翻译成javascript,但对于以下示例,我却没有这样做,也不知道是什么原因。尽管有相似的代码,但是javascript代码似乎产生了与python完全不同的输出。我已经研究了这个问题,并且似乎javascript无法执行第二个递归分支?谁知道我该如何使javascript代码输出与python相似的代码?谢谢1- Py…

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

在Django视图中渲染URL变量 - javascript

我试图在URL中传递一个id,它是在js中创建的,我需要在渲染中传递它,以便可以在新页面的jQuery中使用它。这可能吗?JSresults ="'results/"+this.pk+"'"; 网址url(r'^personnel/results/(\d*)/$', '…

将第三方网站的POST表单数据发送到Django - javascript

我正在托管一个Django网站,该网站存储有关用户的信息。但是,我想在第三方网站上托管表格,例如订阅电子报。我希望能够从URL中的查询集中获取信息并将其发布回我的Django网站。我有一个小脚本,可抓取queryset信息并将其放入表单上的隐藏字段中,然后发布该数据。但是,目前这是在我的网站上完成的。如果我要在其他人的网站上托管该表格,那么最好的处理方式是什…