htmlunit抓取js执行后的网页源码
上次我不是写了一个自动抓取博客访问量吗 (点击打开链接) 可是昨天晚上我又运行的时候,发现不能用了。。
运行了几次 发现使用URLConnection 得到的网页源码和浏览器直接查看的不同。 URLConnection 使用IO流读取到的源码
只有积分 没有访问量了
而使用浏览器访问 直接查看源码
有访问。
这也就导致了我的程序不能用了 需要更新了
想想原因 可能是幕后主使人把访问量放在了js里面 动态展示,而我使用URLConnection 访问的静态界面 确确实实没有收到。
于是开始百度了 百度过来 百度过去。。
发现了一个回复了三年还没有结贴的帖子
java爬虫项目,如何获取js执行后的完整网页源代码?
- public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
- // TODO Auto-generated method stub
- WebClient wc=new WebClient(BrowserVersion.FIREFOX_24);
- wc.setJavaScriptTimeout(5000);
- wc.getOptions().setUseInsecureSSL(true);//接受任何主机连接 无论是否有有效证书
- wc.getOptions().setJavaScriptEnabled(true);//设置支持javascript脚本
- wc.getOptions().setCssEnabled(false);//禁用css支持
- wc.getOptions().setThrowExceptionOnScriptError(false);//js运行错误时不抛出异常
- wc.getOptions().setTimeout(100000);//设置连接超时时间
- wc.getOptions().setDoNotTrackEnabled(false);
- HtmlPage page=wc.getPage("http://blog.csdn.net/su20145104009?viewmode=contents");
- String res=page.asText();
- //处理源码
- deal(res);
- }
最后得到的源码如下:

- LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
- java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit")
- .setLevel(Level.OFF);
- java.util.logging.Logger.getLogger("org.apache.commons.httpclient")
- .setLevel(Level.OFF);
由于我们在这里 引入了htmlunit 的jar包 .那么再用上次的脚本批量处理 就行不通了 ~
- echo off
- setlocal enabledelayedexpansion
- ::定义一个字符串
- set str=
- ::遍历htmlunit文件夹
- for /f "delims=" %%a in ('dir /b "E:\lib\htmlunit-2.14-bin\lib\*.jar"') do (
- set "str=!str!E:\lib\htmlunit-2.14-bin\lib\%%a;"
- )
- echo on
- e:
- javac -cp .;%str% AutoMarkBlogView.java
- java -cp .;%str% AutoMarkBlogView
- pause
运行结果如下:
htmlunit抓取js执行后的网页源码的更多相关文章
- java_爬虫_获取经过js渲染后的网页源码
md 弄了一天了……(这个月不会在摸爬虫了,浪费生命) 进入正题: 起初是想写一个爬虫来爬一个网站的视频,但是怎么爬取都爬取不到,分析了下源代码之后,发现源代码中并没有视频的dom 但是在浏览器检查元 ...
- java抓取东方财富股票数据(附源码)
背景 前段时间给朋友写了一个自动抓取同花顺股票数据的程序,不少人觉得不错. 这几天后台有粉丝给我留言让我也抓一下东方财富的数据,说东方财富的数据特别难抓,我还真不一定能搞得定. 本来我是一个德艺双磬且 ...
- 如何用phantomjs去抓取js渲染后的页面
1.安装phantomjs 网上有很多. 2.执行官网上的示例代码 // Read the Phantom webpage '#intro' element text using jQuery and ...
- Java使用HtmlUnit抓取js渲染页面
需求: 需要采集js渲染的页面,有些网站的页面是js渲染的 实现: 基于HtmlUnit实现: public static void getAjaxPage() throws Exception{ W ...
- 使得fiddler来抓包查看微信浏览器的网页源码
需要工具:http://www.telerik.com/fiddler 下载安装后 第二步: 打开这个选项: 设置代理:allow remote computer to connect 端口为888 ...
- 抓取Js动态生成数据且以滚动页面方式分页的网页
代码也可以从我的开源项目HtmlExtractor中获取. 当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢? 如类似今日头条这样的网 ...
- 如何用python抓取js生成的数据 - SegmentFault
如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...
- Scrapy爬虫框架教程(四)-- 抓取AJAX异步加载网页
欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction ...
- sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取
原文:sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取 在多人开发中最头疼的是人少事多没有时间进行codereview,本来功能都没时间写,哪有时间来开会细细来分析代码.软件能跑就行, ...
随机推荐
- JAVA基础--JAVA API集合框架16
一.Map集合 1. map集合介绍 Collection集合的特点: 集合中存储的所有元素都是单一元素,元素和元素之间没有必然的关系.因此我们把Collection集合也称为单列集合. Map集合: ...
- 优化jQuery选择器
优化jQuery选择器 选择优化比以前更加重要,因为越来越多的浏览器实现了queryselectorall()并承担了将jQuery选择器转移到浏览器的责任.记住这些小技巧可以让你轻松突破学习选择器时 ...
- jQuery 设置图片 src 的2种方法
// 方法1 $('#imgValidateCode').attr("src", data.CodeUrl); // 方法2 var self = $("#refresh ...
- Unity3D研究院之手游开发中所有特殊的文件夹
这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Edi ...
- Codevs 1794 修剪花卉
1794 修剪花卉 题目描述 Description ZZ对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题. 一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿 ...
- js对象—类型和属性特性
前言 权威指南中摘要的,工作中用不到的,重要的js基础. 三类对象两类属性 内置对象(native object) 是由ECMScript规范定义的对象或者类.例如:函数,数组,日期,正则... 宿主 ...
- (转)java 线程同步
转自 http://blog.csdn.net/column/details/java-thread.html http://leo-faith.iteye.com/blog/177779 http: ...
- RN初始化项目报错
解决方法:全局删除yarn
- 学习Spring Boot看这两个开源项目就够了!非得值得收藏的资源
Spring Boot我就不做介绍了,大家都懂得它是一个多么值得我们程序员兴奋的框架. 为什么要介绍这两个开源项目呢? 1.提供了丰富的学习实践案例 2.整合了非常多优质的学习资源 不多说了,直接上链 ...
- XML标准和RFC官方文档