博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络爬虫入门系列(二)
阅读量:5119 次
发布时间:2019-06-13

本文共 2725 字,大约阅读时间需要 9 分钟。

 java中 抓取网页一共有5种方式 

    通过jdk自带的方法  有两种方式可以抓取网页,

  他们分别是。

     httpurlConnection 抓取网页, nio发送http请求 抓取网页 , 由于封装的不够好,抓取网页时代码较复杂,所以不常用

 

   Jsoup,   httpClient,   htmlunit 

   是目前较流行的,封装较完善的,可以用来抓取网页的 工具包. 

   此外还有htmlpaser等。 但是有点过时了。这里暂时只介绍这3种.

 

      首先 先使用  jdk自带的    httpurlConnection   类  抓取网页

       新建一个项目  Crawler

       新建一个包  org.apache.crawlerType

       新建一个类 urlConnection

      编写如下代码

package org.apache.crawlerType;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class urlConnection {        public static void main(String[] args) {        HttpURLConnection conn = null;                try {        //构造一个连接        conn = (HttpURLConnection) (new URL("http://www.cnblogs.com/szw-blog/p/8565944.html")).openConnection();                    conn.setConnectTimeout(3000); //设置建立连接的 超时时间  3秒。                conn.setReadTimeout(3000);    //设置数据传输的超时时间 3秒。   注意两者的区分              //ConnectTimeout只有在网络正常的情况下才有效,而当网络不正常时,ReadTimeout才真正的起作用              //比如说。 用程序发起了一个url连接。 服务器正在传输数据给你。  突然断网了。              //如果不设置数据传输的超时时间。 则 该线程 会直接 阻塞住。 程序也不会往下执行 ,也不会报错//设置请求头,设置当前的  浏览器 是火狐   (反爬的服务器会读取请求头里面的信息。 如果不设置浏览器请求头的话。许多网站都会不返回信息);              //除此之外,还有做 Cookie 校验的  等              conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Linux; U; Android 6.0.1; zh-CN; MI 5 Build/MXB48T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/11.8.8.968 Mobile Safari/537.36");               // 请求头详解 可以看  http://blog.csdn.net/alanlzz/article/details/72846718                    //网络状态码  为200  则为成功访问。  常见的 还有 404 , 500等.            if(200 == conn.getResponseCode()){                                 InputStream is =conn.getInputStream();   //获取页面的io流                                                StringBuffer sb=new StringBuffer();                                BufferedReader br = new BufferedReader(new InputStreamReader(is                     ,"UTF-8"));    //以utf-8编码 解码                                String line = null;                                while ((line = br.readLine()) != null) {                    sb.append(line+"\r\n");                }                                System.out.println(sb.toString());            }                        conn.disconnect();   //关闭该链接,相当于关闭当前页面,  养成随手关闭链接的良好的习惯很重要。                } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        finally{            conn.disconnect();   //关闭该链接,相当于关闭当前页面,  养成随手关闭链接的良好的习惯很重要。        }    }}

 

运行后的结果为

 

以上 是httpurlConnection 抓取网页 的简单方法

下一章  介绍 jsoup 访问网页的java 实现

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/szw-blog/p/8566507.html

你可能感兴趣的文章
Regular Experssion
查看>>
图论例题1——NOIP2015信息传递
查看>>
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>
集合体系
查看>>
vi命令提示:Terminal too wide
查看>>
引用 移植Linux到s3c2410上
查看>>
MySQL5.7开多实例指导
查看>>
[51nod] 1199 Money out of Thin Air #线段树+DFS序
查看>>
poj1201 查分约束系统
查看>>
Red and Black(poj-1979)
查看>>
分布式锁的思路以及实现分析
查看>>
腾讯元对象存储之文件删除
查看>>
jdk环境变量配置
查看>>
安装 Express
查看>>
包含列的索引:SQL Server索引的阶梯级别5
查看>>
myeclipse插件安装
查看>>