网络爬虫之网页抓取

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值