采集遇到的问题,直接页面源文件没有图片地址,用firebug能看到地址!

kukala 发布于 2013/06/04 21:27
阅读 1K+
收藏 0

采集遇到的问题,直接页面源文件没有图片地址,用firebug能看到地址!

 

加载中
0
自风
自风

我使用Java搞定了,PHP估计也差不多的。

d:/test.js的内容如下:(即,从这个URLhttp://tel.dm5.com/m117793-p2/chapterimagefun.ashx?cid=117793&page=2&language=1&key=抓取过来的)

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('m 6(){2 7=4;2 a="9";2 8="l://k.n.q.p/o/e/4";2 3=["/c.5","/b.1","/f.1","/j.1","/h.5","/g.1","/r.1","/A.1","/z.1","/y.1","/C.5","/B.1","/u.1","/t.1","/s.1"];w(2 i=0;i<3.v;i++){3[i]=8+3[i]+\'?7=4&a=9\'}x 3}2 d=6();',39,39,'|png|var|pvalue|117793|jpg|dm5imagefun|cid|pix|8c6380e81de97a16f6655ceb52f56e39|key|3_7244|2_8254||10726|4_8504|7_8495|6_3863||5_9997|manhua21|http|function|tel|11|com|cdndm5|8_6716|16_6712|15_7857|14_6401|length|for|return|11_9919|10_6445|9_8412|13_7706|12_5925'.split('|'),0,{}))
Java代码如下:
public static void main(String[] args) throws Exception {
	String code = FileUtil.readFile(new File("d:/test.js"));
      //先去掉js的eval
	String script = code.replace("eval", "");
	
	ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
      //然后用Java的JS引擎来eval这段脚本,得到的是解密后的脚本
	String function = (String)engine.eval(script);
      //为了直接获取执行函数后的结果
	function = function.replace("var d=dm5imagefun()", "; dm5imagefun()");
    Compilable compilable = (Compilable) engine;  
    CompiledScript JSFunction = compilable.compile(function); //解析编译脚本函数  
  //执行函数获得结果
    NativeArray rs = (NativeArray)JSFunction.eval();  
    for(int i=0; i < rs.getLength(); i++) {
        System.out.println(rs.get(i, rs));
   }
}
执行上述代码,输出如下:
http://manhua21.tel.cdndm5.com/11/10726/117793/2_8254.jpg?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/3_7244.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/4_8504.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/5_9997.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/6_3863.jpg?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/7_8495.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/8_6716.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/9_8412.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/10_6445.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/11_9919.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/12_5925.jpg?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/13_7706.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/14_6401.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/15_7857.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
http://manhua21.tel.cdndm5.com/11/10726/117793/16_6712.png?cid=117793&key=8c6380e81de97a16f6655ceb52f56e39
OK的话,给最佳答案吧,哈。
自风
自风
回复 @kukala : :) 不客气
k
kukala
非常感谢你的帮助!
自风
自风
回复 @kukala : 就是在java代码里执行JS的脚本得到执行后的结果
k
kukala
不好意思,没有看明白,能说下原理吗? 我现在是把JS输出后的结果ajax到php的。
0
TGVvbmFyZA
TGVvbmFyZA
獲取到的地址是錯誤的吧~
0
唐代de豆腐
唐代de豆腐
图片地址 如果是动态生成的,你得到的源码中肯定没有那部分html.因为渲染是浏览器功能。得到的源码仅仅是文件而已。
唐代de豆腐
唐代de豆腐
@kukala 首頁 我覺得你應該搞清楚圖片是怎麼動態生成的,找到原因纔好分析
k
kukala
请问有什么办法看获取到图片地址?以方便采集!
0
迷路的游侠
迷路的游侠

用JS控制显示图片,这样你查看源代码就看不到,但是firebug里能看到。

仔细读一下它的JS代码,还是能抓取的

k
kukala
偶JS不行 = =!
迷路的游侠
迷路的游侠
回复 @kukala : 那就根据ajax请求获得的图片地址去抓取不就行啦?
k
kukala
看了他的图片地址是用ajax来输出图片地址的,JS不行,不知道怎么获取地址?请教了!
0
Dr.Who
Dr.Who
不复杂的话看代码,复杂的话上引擎吧
Dr.Who
Dr.Who
回复 @kukala : js解析器,webkit,gecko之类的
k
kukala
请教,你指的引擎是?
0
抛出异常的爱
k
kukala
网上搜索了下,感觉使用Selenium麻烦了些,请问有没有更简单点的方法?
0
抛出异常的爱
抛出异常的爱

哪里麻烦了?

其它 方案都比这个麻烦.....


ifram里加对方网址等个一秒之后

var str = $(document.getElementById('iframeId').contentWindow.document.body).html().innerHTML ; //发给主机.再分析

0
k
kukala

引用来自“抛出异常的爱”的答案

哪里麻烦了?

其它 方案都比这个麻烦.....


ifram里加对方网址等个一秒之后

var str = $(document.getElementById('iframeId').contentWindow.document.body).html().innerHTML ; //发给主机.再分析

<iframe src="http://127.0.0.1/"></iframe>
<script type="text/javascript">
var daima = $(document.getElementById('iframeId').contentWindow.document.body).html();
document.write("<br>");
document.write(daima);
</script>

获取不到任何内容

 

抛出异常的爱
抛出异常的爱
$(document.getElementsByTagName('iframe')[1].contentWindow.document.body).get(0).outerHTML 打开chrome开发者工具 在 这一页可以运行
抛出异常的爱
抛出异常的爱
1. iframe需要有id 否则找不到元素 2. 不同浏览器写法不同..... 3.需要settimeout等会内部js运行一段时间
0
自风
自风
你把你要采集的地址发出来,我帮你看看能否抓到图片链接,OK的话再在这里回复你
k
kukala
地址是:http://tel.dm5.com/m117793-p2/ get地址是:chapterimagefun.ashx?cid=117793&page=2&language=1&key= 每页获取的数据会变化
0
c
crackfan
ajax 获取真实的地址吧!采集ajax 而不是直接看到的html!
k
kukala
恩,有点头绪了!
返回顶部
顶部