如题

解决方案 »

  1.   

    这个实现非常容易的. 用httpClient和httpParser可以很轻松搞定
      

  2.   

    httpParser?求详解
    我最近想做使用脚本引擎模拟浏览器来执行网页中的js代码获得动态的url,也看到了httpParser,不知道它功能这么强大
      

  3.   

    httpParser是一个解析包而已.!
    比如说你用httpClient发请求,爬回来一个页面,那么这个时候你想拿到网页中所有的超链接, 这个时候用httpParser就很容易了阿.! 例子jar包里肯定有!你用ScriptEngineManager调用js,不就可以获得js动态生成的url了吗.? 你上面那句话一说,我还真不太明白你有什么需求了.! java调用js跟你要爬网页关系不大.!
    但是比如说你拿到某些超链接, 当点击这个超链接会触发一段js函数的时候,这个时候才会跟ScriptEngineManager挂钩.!
      

  4.   

    楼上高手啊!我刚刚说错了,应该是htmlparser不是httpparser。刚才你说的用httpclient发请求,爬回来一个页面,用httpparser就可以得到网页中所有的超链接,你说的这种超链接是静态的吧?还有一些超链接是通过执行js语句得出的url,这种url我也需要爬下来的。不知楼上是否知道rhino或者corba?
      

  5.   

    htmlParser是javax.swing包下自带的解析html的一些类. 而httpParser是第三方提供个jar包.!
    发送一个请求到一个网站, 毕竟会相应一个结果给你是吧.?服务器和你的java程序是通过什么通信的呢.?inputStream和outputStream对吧.?
    HttpClient是对url/Socket的封装, 可以直接拿到返回结果, 然后用EntityUtils.toString(entity)可以把你的网页变成字符串形式.! 这个时候你拿到的网页肯定既有js,也有html内容吧.?解析它就好了阿.! 如果发现还有<script>标签,就拿这里面的内容再发请求拿结果.!
    不用你说的rhino和corba, 就用你说的htmlParser和HttpClient+ScriptEngineManager就能完成你想要做的事了.!
      

  6.   

    但是对于js里边涉及的浏览器对象,比如document和window,怎么处理呢?向您请教了
      

  7.   

    对了,问得好.!刚忘记告诉你了.!
    程序发请求从某些程度上讲是代替不了浏览器的.!比如就像你说的window/document一些浏览器的对象,程序是无法解析的.!
    ScriptEngineManager调用js的时候,你的js里面不要有浏览器相关的对象,比如说window,document.
    所以一般我们爬回来js都会做一些小小的修改,把与浏览器相关的对象全部用其他方式解决.!
    比如说鼠标位置, window.event之类的, 自己模拟下鼠标,每次把这个位置调整下.!
    曾经我也为改js花了一些功夫的.!
      

  8.   

    java实现简单的网络爬虫 抓取并保存博客园(cnblogs)的文章
      

  9.   

    我在论文上看到说可以用脚本引擎模拟浏览器执行js脚本,把浏览器内置对象本地化以后就可以使用脚本引擎解析了。而和url有关的dom对象只有window和document,所以不能说js里面不要有浏览器相关的对象吧,现在的问题是我不知道怎么实现本地化
      

  10.   

    好的.. 发下我邮箱[email protected] 我看看你说的本地化是什么东西.!
    以前还真没这么搞过.!   thank you
      

  11.   

    动态生成的url 连google都不抓的,你要分析出这个你只能自己分析你要抓取页面的html中的js代码块,然后去 写抓取。比如说google map中的地图块就是Js自动生成的。 你只能尝试用java代码代替js代码去算新的url然后抓取该连接的图片,最后拼接。