【发布时间】:2017-07-10 08:26:22
【问题描述】:
我目前正在开发一个简单的网络爬虫,它将显示给定网站的所有链接。例如,这就是我希望我的程序执行的操作:
-你给它一个网址:http://www.example.com/
-然后程序获取 html 源代码并查找所有 <a href=...></a>tags
-最后,所有的链接都会显示给用户
为此,我将简单的 javacsript 与 jQuery 一起使用,目前卡在 $.ajax() 调用上:
$.ajax({
url:"http://example.com",
dataType : "jsonp",
crossDomain : true,
success : function(data){
console.log(data);
}
});
这会引发Uncaught SyntaxError: Unexpected token < 错误,我不知道如何解决。
这种行为真的可能吗?如果不是,网络浏览器如何实际显示任何站点的源代码?如果这不是获取 HTML 源代码的正确方法,那么正确的方法是什么?
感谢您的关注
【问题讨论】:
-
一般来说,一个 url 不会返回一个 JSONP 响应,除非你专门使用一个端点。只是将 dataType 设置为 JSONP 并不能神奇地让服务器回馈一个,它必须支持它
-
由于 CORS 限制,如果不使用代理(在您的服务器或第三方服务上),单独使用 ajax 将无法正常工作
-
您正在爬取页面以获取链接,这表示您的
dataType不能是jsonp,而是html -
如果在页面加载后使用 javascript 插入远程页面中的 html,还需要使用无头浏览器......这几天很常见
-
@apokryfos 我同意,但是将 dataType 设置为 html 将不起作用,因为它会违反跨域策略
标签: javascript jquery ajax cross-domain