美文网首页
Java零基础入门-爬虫

Java零基础入门-爬虫

作者: 司马山哥 | 来源:发表于2019-03-19 15:05 被阅读0次

    Java中的URL类

    Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷。我们通过使用Java的URL类 就可以经由URL完成读取和修改数据的操作。从URL得到的数据可以是多种多样的,这些都需要一种统一的机制来完成对URL的读取与修改操作。Java语言在它的java.net软件包里就提供了这么一种机制。(原贴https://www.cnblogs.com/blackiesong/p/6182038.html或者参考教程http://www.runoob.com/java/java-url-processing.html

    构造
    使用完整 的URL来创建一个URL class的例子:

    URL aURL = new URL(“http://www.mycompany.com:8080/index.html”);
    

    在这个例子中,我们创建了一个使用完整URL的URL class,其中明确指出了使用的协议是http,主机名称是www.mycompany.com,端口号码为8080,文件/资源为 index.html。如果组成URL的语法发生了错误,那么构造器就会发出MalformedURLException。

    连接
    通过使用openConnection来完成这一操作,使用openConnection并不需要参数,并且在操作成功之后,它会返回一个URLConnection class的实例。

    URLConnection conn=url.openConnection();
    

    从URL连接中读取数据
    使用java.io stream class来从URL中读取数据是一个非常简单的过程。一旦你建立了一个成功的连接,那么你就可以获得针对这个连接的输入流并且开始进行写的操作了。很幸 运的是,java.io classes可以以与对文件流或者socket流进行操作的同样方式进行对从URLConnection流返回的数据进行操作。

    InputStream istream=conn.getInputStream();
    

    BufferedReader使用注意

    从一个有若干行的文件中依次读取各行,处理后输出,如果用以下方法,则会出现除第一行外行首字符丢失现象

    String str  = null;
    br=new BufferedReader(new FileReader(fileName));
    do{
      str = buf.readLine()); 
    }while(br.read()!=-1);
    

    以下用法会使每行都少首字符

    while(br.read() != -1){
           str = br.readLine();     
     }
    

    原因就在于br.read() != -1 这判断条件上。 因为在执行这个条件的时候其实它已经读取了一个字符了,然而在这里并没有对读取出来的这个字符做处理,所以会出现少一个字符,如果你这里写的是while(br.readLine()!=null)会出现隔一行少一行!

    建议使用以下方法

    String str = null;
          while((str = br.readLine()) != null){
          //System.out.println(str);//此时str就保存了一行字符串
    }
    

    这样应该就可以无字符丢失地得到一行了

    相关文章

      网友评论

          本文标题:Java零基础入门-爬虫

          本文链接:https://www.haomeiwen.com/subject/sqgvmqtx.html