说到网页抓取,往往有两个点是不得不说的,首先是网页编码的识别,另外一个是对网页脚本运行的支持,除此之外,是否支持以POST方式提交请求和支持自动的cookie管理也是很多人所关注的重要方面。其实Java世界里,已经有很多开源的组件来支持各种各样方式的网页抓取了,所以说使用Java做网页抓取还是比较容易的。下面就是我自己做得网页抓取咯!
思路:1.先获取前端用户输入网页的链接 2.建立网络连接 4.下载源代码(下载时会创建一个临时文件)
先展示下用户输入的网址:
附上网页源码:
<style type="text/css">
*{margin:0;}
body{background:url('img/bg.jpg');overflow:hidden;
background-size:cover;}
.box{width:960px;height:480px;margin:200px auto;text-align:center;}
.box h1{color:white;}
.box img{ opacity:.5;border-radius:10px;}
input{margin:40px 0;}
.btn{height:40px;width:140px;background:#a9a9a9;}
#url{height:35px;width:360px; autocomplete:off;text-indent:20px;}
</style>
<body>
<div class="box">
<img src="img/logo.jpg" width="200px" height="50px">
<h1>梦想集群· java学院</h1>
<form action="Source.jsp" method="post" onsubmit="validator()">
<input type="text" placeholder=
"请输入URL,如http://www.qq.com" name="url" id="url" >
<input type="submit" class="btn" value="获取网页源代码" name="btn">
</form>
</div>
<script type="text/javascript">
//判断网址的合法性
function validator(){
//获取输入框里面的值
var url = document.getElementById("url").value;
//判断是不是空 或者长度为0
if(url==""||url.length==0){
alert("请输入url");
//获取焦点
document.getElementById("url").focus();
return false;
}
if(url!=""&&url.indexOf("http://")==-1){
alert("请输入正确的url");//获取焦点
document.getElementById("url").focus();
return false;
}
}
</script>
</body>
获取网页源码和网页中的图片
java后端代码片段:
public static String htmlSource(String link,String encoding){
StringBuilder stringBuilder = new StringBuilder();
try {
//获取网络对象
URL url = new URL(link);
//建立网络连接
URLConnection uc = url.openConnection();
//伪装
uc.setRequestProperty("User-Agent", "java");
//下载源代码
//获取文件输入流
InputStream inputstream = uc.getInputStream();
//建立io流的缓冲 提升效率
InputStreamReader in = new InputStreamReader(inputstream,encoding);
//下载源代码的缓冲
BufferedReader reader = new BufferedReader(in);
//开始下载源代码
//创建一个临时文件
String line=null;
while ((line=reader.readLine())!=null) {
stringBuilder.append(line+"\r\n");
}
//关闭流 先进后出 后进先出
reader.close();
in.close();
} catch (Exception e) {
//打印堆栈信息
e.printStackTrace();
}
return stringBuilder.toString();
}
//
<%
//获取url
String url=request.getParameter("url");
//获取源代码
String html = TmDownImgUtil.htmlSource(url,"gbk");
//将源代码放到页面对象里面
pageContext.setAttribute("htmlsource", html);
%>
ps.想要源码的请私聊我