主题:当右键西西河的页面时,为什么整个page source -- 华夏英雄
- 共: 💬 17 🌺 9
看上去没有多少中文呢?
难道是转码?
好奇一下。
西西河是铁手用JS code在你的浏览器中写出来的,光看静态的HTML没用。
在手机上支持不是特别好,排版被弄得千奇百怪的
先加载了"/incs/rs.php?T=2&V=1"这个javascript文件,里面有zJ_PE()函数,负责最初的解码工作。
整个页面分为上下左右四个div,分别是DG_Top, DG_Bottom, DG_Left和DG_Right。以DG_Top为例,它的实际内容存在ts这个变量中,你可以看见:
var ts="1#$<Cdi ......";
走zJ_PE()解码以后,就是普通的HTML了:
<div><a href="/" class="fL"> ......
至于文章的内容,存在ls这个变量里面,比如本页面就是:
<b>当右键西西河的页面时,为什么整个page source</b> [ 华夏英雄 ] <small>于:2011-02-11 12:11:48 主题帖</small><br/><p>看上去没有多少中文呢?</p><p>难道是转码?</p><p>好奇一下。</p>
呵呵,什么秘密都显露出来了
感觉zJ_PE()就是把故意搞复杂的东西又还原为原貌。对吗?
这个函数中有一个decodeURIComponent函数,不知道是做什么的。
另外,还有ls、bs等变量,也不知道做什么的。
还想知道,你是如何得到
<b>当右键西西河的页面时,为什么整个page source</b> [ 华夏英雄 ] <small>于:2011-02-11 12:11:48 主题帖</small><br/><p>看上去没有多少中文呢?</p><p>难道是转码?</p><p>好奇一下。</p>
的呢?
decodeURIComponent() 是 Javascript 标准定义的内建的函数,用来解码 URI,主要是除去 URI 里面的特殊字符的转码
zJ_PE() 是铁手写的解码页面内容的函数
用 Firebug 可以很容易地在firefox里面看出整个 Javascript 的运行效果。
问个问题:如果要crawl类似西西河这样的网站(应用了JS),一定要用到firebug吗?
用Java能够调用firebug吗?
右键页面选择inspect element就可以了。
我想知道,能否在Java application中调用这个功能,或者提取chrome inspector或者firebug的内容?
chrome inspector 和firebug就是针对javascript的IDE,只是功能没有Elipse那么强。
或者DOM模型。
chrome inspector在CHROMIUM的设计上是什么?
当右键打开chrome inspector时,chrome将打开一个url(chrome://devtools/devtools.html的render进程。这个进程的任务就是将要INSPECTING的网页的DOM原始数据读出(通过某种代理机制),然后在chrome://devtools/devtools.html的这个进程里面“可视化”。这个“可视化”的计算成本非常高,这个可以通过右键打开chrome inspector的时间来判断。在chrome inspector里面获取网页的DOM“原始数据”(!=静态文本文件)用一句粗话描述最形象 --- 脱了裤子放屁。
而楼主要获取的东西用JAVASCRIPT实现非常简单 --- 一句body.innerHTML而已。里面最关键的问题是什么?执行body.innerHTML的时间,或者说用什么“信号”触发body.innerHTML。最好的时机是网页上的DOM树构建完成后render进程发出的Idle Trigger.只要某个DOM元素在浏览器中存在,它的innerHTML必然是可被浏览器理解的HTML代码。
firebug编辑器中显示的html内容包括html tag和文字自动导出。
这些内容如果是动态产生的,目前靠读取html的page source是无法读出的。
我查了一下,似乎Watir可以做这件事。不知道有没有其他的、类似Java编程的工具可以获得动态的网页内容?
我想把动态网页的内容抓取下来。