import re,urllib2
print(('\n'+'-'16+'\n')join([i for i in refindall(r'<script>()</script>', urllib2urlopen('>
1、搭建服务器做代理捉取跨域请求返回的数据,本地应用页面的ajax请求建立的代理服务器就能间接的实现这样的需求。但是此种做法较为复杂,不建议使用;
2、使用jsonp跨域访问,这种方法是较为普遍的解决方案,其实现原理是:HTML的<script>标签是可以突破同源策略从其他来源获取数据,所以可以通过<script>标签引入jsonp文件,然后通过一系列JS *** 作获取数据。
具体实现步骤如下:
利用本地页面js创建一个<script>元素,地址指向第三方的API网址,形如:
<script src=";提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递), 第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如:
callback({"name":"hax","gender":"Male"})这样浏览器会调用callback函数,并传递解析后json对象作为参数。本地脚本可在callback函数里处理所传入的数据。
示例代码:
<script>var url = ";
使用jsonp需要后端代码配合, 后台返回的json外面需要由回调函数包裹。
script标签的还在是可以跨域的,jsonp 就是利用这一点来跨域。
在 GET 请求中,我们都是为了获取远程的一些数据,所以要实现的目的就是服务器端代码要通过某种方式让 JavaScript 能够拿到数据。所以,jsonp 的实现大概有以下几个步骤:
创建一个全局的临时函数,并在函数内调用响应回调
// jsonp1 是生成的一个临时函数名,可以通过简单的计数来生成,如jsonp2, jsonp3// 生成不同的函数的目的是为了防止多个 jsonp 同时请求,回调的函数被覆盖
windowjsonp1 = function( data ) {
// 调用在成功之后的回调方法
onsuccess( data );
// 删除临时函数,释放内存
windowjsonp1 = null;
};
2 通过 documentcreateElement( 'script' ) 创建 script 标签,src 属性设置成远程的 api 的 url。其实就是让浏览器加载一段 JS,这段 JS 就是服务器返回的内容。
3 服务器端对返回的数据进行包装,生成一段 JS,这段 JS 里面调用了 jsonp1 这个方法,并且把数据作为参数传进去。
4 script 标签加载完成之后,jsonp1 被执行,通过 onsuccess 将 data 传递给回调方法,jsonp1 方法被销毁,释放内存。
servelt类的传值方式有 request/response/session/contex/application
可以传值到 servlet jsp页面 控制action等等
如果要在页面中获取传的参数,还是要在jsp的代码编辑方式<% %>里面将你需要传的参数获取了,比如是个String 那么在<script></script>之前将String 定义好,然后以 <%= %>方式放入其中。
本质是,你需要知道jsp就是一个servlet的变种,在容器中还是以servlet模式运行的。
可以放在head标签里面,引用外部文件或者直接在script标签里写;不过要确保页面所有元素加载完成后才能调用,也就是说要添加一个onload函数。
放在body结束之前可以避免这种情况,因为浏览器是从上到下进行渲染的,所以,当前面的元素都被渲染完之后才执行javascript代码。
<script type="text/javascript">
$(function(){
var a = $('class img')attr('src');
alert(a);//a的值就是选取的元素的值。
})
赋值和调用的程序要分开:
<script type="text/javascript">
var menuW="300px";
var barW="300px";
</script>
<script type="text/javascript" src="mymenujs" ></script>
这样,在mymenujs里就可以调用变量了。
以上就是关于如何抓取页面里的script标签包括里面的内容全部的内容,包括:如何抓取页面里的script标签包括里面的内容、JQuery ajax json怎样获取外网url返回的数据、jsonp是怎么通过script标签进行跨域的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)