【问题标题】:Screen scraping and proxies using Ruby使用 Ruby 进行屏幕抓取和代理
【发布时间】:2012-09-21 17:26:28
【问题描述】:

我知道这里有几个屏幕抓取线程,但没有一个答案让我很满意。

我正在尝试使用 javascript 从外部网页中抓取 HTML。我正在使用 $.ajax,一切都应该正常。这是我的代码:

$.ajax({
    url: "my.url/path",
    dataType: 'text',
    success: function(data) {
        var myVar = $.get(url);
        alert(myVar);
    }
});

唯一的问题是它正在我的网络服务器中寻找指定的 url。如何使用代理访问外部网页?

【问题讨论】:

  • 这取决于您使用的服务器类型以及您要使用的服务器端语言。
  • 我正在为服务器使用嵌入式 ruby​​
  • 我已经修改了您的标题,以便获得更合适的受众。
  • 嗯,问题是我试图访问的站点无法从服务器访问。因此,我试图通过 javascript 访问它,因为正在访问服务器的客户端可以访问其他网页。事实上,我已经从我的 ruby​​ 服务器访问外部网页,但这不适用于我的应用程序,所以我需要尝试在 javascript 中进行。
  • 同源策略阻止您对其他域进行 AJAX 调用,因此这不起作用。

标签: ajax proxy screen-scraping erb


【解决方案1】:

由于跨站点脚本限制,您必须将所需的 URL 传递到服务器上的一个页面,该页面将从服务器端查询相关 URL,然后将结果返回给您。查看下面的线程并将其合并到您的应用程序中,并在您的 AJAX 函数访问该页面时让它返回源代码。

How to get the HTML source of a webpage in Ruby

使用 GET 请求是传输您要获取服务器的页面 URL 的最简单方法,这样您就可以调用如下内容:

$.ajax("fetchPage.rb" + encodeURI(http://www.google.com))

因为您不能直接从服务器访问有问题的一侧,所以您将不得不通过代理通过管道传输服务器端脚本才能使请求工作,这实际上取决于您的设置。看看 Ruby 中的 Proxy 类:

http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTP.html#method-c-Proxy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2011-01-12
    • 2013-12-31
    • 2013-01-12
    • 2017-02-25
    • 2023-03-25
    • 2010-09-16
    相关资源
    最近更新 更多