网络爬虫之网页抓取

来源:互联网 发布:淘宝试用协议怎么同意 编辑:程序博客网 时间:2024/05/20 20:43

说到网页抓取,往往有两个点是不得不说的,首先是网页编码的识别,另外一个是对网页脚本运行的支持,除此之外,是否支持以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.想要源码的请私聊我

原创粉丝点击