通过Java中的URL类进行简单的网络资源的爬取

骑猪看日落 2022-04-04 14:27 213阅读 0赞

一、先说一下URL类的构造方法可以通过两种路径,1)绝对经构建,2)相对路径构建。

我这里用绝对路径来进行构建:加入构造方法的字符串的各部分的含义直接用代码体现了。

  1. package cn.skh.url01;
  2. import java.net.MalformedURLException;
  3. import java.net.URL;
  4. public class TestUrl {
  5. public static void main(String[] args) throws MalformedURLException {
  6. //绝对路径构建
  7. URL url=new URL("http://www.baidu.com:80/index.html#aa?uname=skh");
  8. System.out.println("协议"+url.getProtocol());
  9. System.out.println("域名"+url.getHost());
  10. System.out.println("端口"+url.getPort());
  11. System.out.println("资源"+url.getFile());
  12. System.out.println("相对路径"+url.getPath());
  13. System.out.println("锚点"+url.getRef());
  14. System.out.println("参数"+url.getQuery());//?之后的为参数。如果存在锚点的话返回null,否则返回true;
  15. }
  16. }

输出:这需要注意的是如果存在锚点则不会有参数的存在,因为IDE会把他默认为锚点的一部分,在这里我添加了锚点,所以返回了一个null;

  1. 端口80
  2. 资源/index.html
  3. 相对路径/index.html
  4. 锚点aa?uname=skh
  5. 参数null

二、爬取资源:

在这里用了百度来测试:最好使用BufferedReader和BufferedWriter来进行读写,可以方便的转化编码格式;

  1. package cn.skh.url01;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.InputStreamReader;
  8. import java.io.OutputStreamWriter;
  9. import java.net.MalformedURLException;
  10. import java.net.URL;
  11. /**
  12. * 获取源代码
  13. * @author SKH&L
  14. *
  15. */
  16. public class TestURL02 {
  17. public static void main(String[] args) throws IOException {
  18. URL url=new URL("http://www.baidu.com");//主页为默认资源,不写资源默认访问首页
  19. //转化流;
  20. BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));
  21. BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("baidu.html"),"utf-8"));
  22. String str=null;
  23. while((str=br.readLine())!=null) {
  24. // System.out.println(str);
  25. bw.append(str);
  26. bw.newLine();
  27. }
  28. bw.flush();
  29. bw.close();
  30. br.close();
  31. }
  32. }

发表评论

表情:
评论列表 (有 0 条评论,213人围观)

还没有评论,来说两句吧...

相关阅读