从远程位置获取页面源几乎可以工作 - 只需要将结果放入变量中

时间:2014-11-19 12:31:25

标签: javascript

通过以前的帖子和其他搜索的结果,我似乎能够得到我想要的东西,但它似乎是一个数据对象,而不是我可以分配给变量的文本。

我在我正在工作的环境中仅限于javascript,我想要做的是在返回的数据上使用字符串函数,以便我可以搜索某些术语。

这是返回数据对象的url格式 - 结果是要求您打开或保存文本文件:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%20%3D%20%22http://www.redrag.info/index.htm%22%20and%20xpath%3D%22*%22&format=xml&callback=cbfunc

(如果您愿意,可以在上面的示例中替换我的网址 - http://www.redrag.info/index.htm -

我可以使用一些javascript文档函数将此输出分配给变量,而不是打开文本文件吗?

感谢。

3 个答案:

答案 0 :(得分:0)

删除callback=cbfunc并定义你的回调函数。并且您可以从format=json更改format=xml,因为它很容易处理。现在,您可以使用该数据获取数据并执行任何操作

$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%20%3D%20%22http://www.redrag.info/index.htm%22%20and%20xpath%3D%22*%22&format=json",
function(data) {
    alert(data);
}
);

http://jsfiddle.net/kriyeta/Lo3m4gb2/4/

答案 1 :(得分:0)

这需要JSONP(将响应解析为内联脚本),使用像jQuery这样的库是微不足道的:

$.ajax({
  url: the_url,
  jsonpCallback: 'cbfunc',
  dataType: 'jsonp'
})
.success(function(data) {
    alert(data.query.created);
});

http://jsfiddle.net/alexk/92erv4v5/

答案 2 :(得分:0)

除了@kriyeta上面的第一个答案之外,我的代码运行良好,如下代码段所示:

    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    </head>
    <body>
    <script>
    var inputxt="http://www.redrag.info/index.htm";
    var pagesrc;

    $.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%20%3D%20%22"+inputxt+"%22%20and%20xpath%3D%22*%22&format=json",
    function(data) {
    pagesrc=JSON.stringify(data);
    alert(pagesrc);
    }
    );
    </script>
    </body>
    </html>

但当我用作目标网址时:https://ajax.googleapis.com/ajax/services/search/images?v=1.0%26q=DOG(如果您将其放入浏览器地址栏以查看实际页面,则需要将%26更改回&amp;)我会得到一个&#39 ;疑似服务滥用条款&#39;消息,因为我认为Google可以确定它是自动请求而不是人工请求。

我想要实现的是一个脚本,我可以使用AI虚拟助手设施,我正在开发知识库。如果谷歌网址没有失败,那么上面的代码就是我需要的。

这是回答访客的请求,例如“给我看一张狗的照片”。另一个AI机器人 - &#39; Jeanie&#39;在https://ask.pannous.com/完成了这一点 - 当被问到相同的问题时,它会从(我正在假设)Google图片中检索图片 - 所以我知道它可以完成并且我渴望拥有类似的设施

我认为如果我能找到一个不依赖于jQuery库的解决方案,那么它可能会起作用。

感谢任何想法。谢谢。