【问题标题】:How do I parse a remote website using ajax如何使用 ajax 解析远程网站
【发布时间】:2013-01-31 01:19:57
【问题描述】:

我正在尝试使用 JSONP 解析远程网站的 DOM 我认为问题是当我得到响应时它不是 JSON,所以延迟对象失败,但是我不能只在那里获取原始数据并以某种方式遍历dom节点? $(document).ready(function() {

                    $('#submitUrl').on('click', function() {

                          var words = {};

                          var url = $('#url').val();


                          //send a JSONP request since its the only cross domain method available
                          var options = {
                                dataType: "JSONP",
                                type: 'GET',
                                url: url,
                          };
                          var arr = new Array();
                          var countArr = new Array();

                          var jqxhr = $.ajax(options)
                                  .done(function(data) {
                                //this will always fail since jquery expects valid json response, try parsing in always pipe

                          })
                                  .fail(function() {

                          })
                                  .always(function(data) {


                                var fileDom = $(data);
                                //grab each element under the body dom element
                                //probably a filter method would work faster
                                fileDom.find('body *').each(function(index, value) {
                                      if ($(this).text())
                                      {
                                            var txt = $(this).text();
                                            //is this in the array already
                                            if ($.inArray(txt, arr)) {
                                                  //get current ocunt
                                                  var c = parseInt(countArr[txt]);
                                                  c++;
                                                  countArr[txt] = c;
                                            }
                                            else {
                                                  countArr[txt] = 1;

                                            }



                                      }


                                });
                          });

                    });

              });

html

    <label>Input URL</label>
                                <input type="text" name="url" id="url" value=""/>
                                <input type="submit" id="submitUrl">

【问题讨论】:

    标签: jquery dom cross-domain jsonp


    【解决方案1】:

    你不能这样做。

    为了能够使用jsonp - 远程端应该以特殊格式(包装在回调函数中)给出响应。

    因此,根据定义,不可能将jsonp 用于任意网页。

    【讨论】:

    • 我可以在 chrome 工具的预览窗口中看到 HTML 响应,所以必须有某种方法来抓取它
    • @Brian:您可以编写不遵循约定的浏览器并说服您的用户使用它。它算作“某种方式”吗?
    猜你喜欢
    • 2012-07-31
    • 2017-03-08
    • 1970-01-01
    • 2011-02-08
    • 2019-11-10
    • 2017-08-21
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多