使用jquery和ajax进行网站抓取

我希望能够操纵给定url的html。 像html抓取的东西。 我知道这可以使用curl或一些抓取库来完成。但是我想知道是否可以使用jquery使用ajax对url发出get请求并检索url的html,并运行jquery代码HTML返回?

谢谢

我想指出,在某些情况下,使用jQuery跨域扫描是完全可以接受的。 Windows边栏小工具在允许跨域脚本编写的“本地计算机区域”中运行。

并且jQuery确实能够将选择器应用于已检索的html内容。 您只需要在空格后将选择器添加到load()方法的url参数。

下面的示例小工具代码每小时检查一次此页面并报告总页面查看次数。

      Question Viewed: 

由于同源策略 ,您不能对您的网站所在的域名进行Ajax请求; 这意味着你将无法做你想做的事……至少直接。

解决方案是:

  • 在你自己的服务器上有某种“代理”,
  • 将Ajax请求发送到该代理,
  • 反过来,它将获取另一个域名的页面; 并将其作为对Ajax请求的响应返回给您的JS代码。

这可以用几乎任何语言(比如PHP,使用curl)在几行中完成……或者你可能能够使用你的web服务器的一些function(例如,参见mod_proxymod_proxy_http ,用于Apache)

它并不难。

 $(document).ready(function() { baseUrl = "http://www.somedomain.com/"; $.ajax({ url: baseUrl, type: "get", dataType: "", success: function(data) { //do something with data } }); }); 

我想这可以给你一个很好的线索 – http://jsfiddle.net/skelly/m4QCt/

http://www.nathanm.com/ajax-bypassing-xmlhttprequest-cross-domain-restriction/

唯一的问题是,由于Internet Explorer和FireFox中的安全性,XMLHTTPRequest对象不允许进行跨域,跨协议或跨端口请求。

您可以使用Selenium之类的工具代替curl,它将自动在浏览器中加载页面。 你可以用它运行JavaScript。

我用一个小的PHP代理执行此操作,暂时剥离IMG标记以加快加载时间。 我将它包装在一个jQuery插件中,使其相对容易使用,请参阅此处的demo / github链接