javaurl,javaURL编程爬取网页

发布时间:2023-01-09

本文目录一览:

  1. java中如何实现URL类?
  2. 用java怎么写URL接口
  3. Java如何利用url下载MP3保存到本地?
  4. java怎样获取url参数
  5. [java URL 添加参数的几种简单方式](#java URL 添加参数的几种简单方式)

java中如何实现URL类?

import java.io.*;
import java.net.*;
public class URLTest {
    public static void main(String[] args) {
        try {
            URL url = new URL(""); // 创建资源类型
            String protocol = url.getProtocol(); // 获取资源类型
            String host = url.getHost(); // 获取域名
            int port = url.getPort(); // 获取端口
            String file = url.getFile(); // 获取路径
            System.out.println("url地址的资源类型为:" + protocol + "域名为:" + host + "端口为:" + port + "路径为:" + file);
            InputStream is = url.openStream(); // 获取页面信息流
            BufferedReader bfr = new BufferedReader(new InputStreamReader(is)); // 封装成字符流
            String len;
            while ((len = bfr.readLine()) != null) {
                System.out.println(len);
            }
            bfr.close();
            is.close();
        } catch (MalformedURLException e) {
            System.out.println("创建URL对象发生异常");
        } catch (IOException e) {
            System.out.println("发生IO操作异常");
        }
    }
}

用java怎么写URL接口

在java中,调用http请求接口,主要通过流的方式进行调用,示例接口如下:

/**
 * 程序中访问http数据接口
 */
public String searchLoginService(String urlStr) {
    /** 网络的url地址 */
    URL url = null;
    /** http连接 */
    HttpURLConnection httpConn = null;
    /** 输入流 */
    BufferedReader in = null;
    StringBuffer sb = new StringBuffer();
    try {
        url = new URL(urlStr);
        in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
        String str = null;
        while ((str = in.readLine()) != null) {
            sb.append(str);
        }
    } catch (Exception ex) {
        logger.error(ex.getMessage(), ex);
    } finally {
        try {
            if (in != null) {
                in.close();
            }
        } catch (IOException ex) {
            logger.error(ex.getMessage(), ex);
        }
    }
    String result = sb.toString();
    System.out.println(result);
    return result;
}

Java如何利用url下载MP3保存到本地?

Java如何利用url下载MP3保存的方法:

/**
 * TODO 下载文件到本地
 * @author nadim
 * @date Sep 11, 2015 11:45:31 AM
 * @param fileUrl 远程地址
 * @param fileLocal 本地路径
 * @throws Exception
 */
public void downloadFile(String fileUrl, String fileLocal) throws Exception {
    URL url = new URL(fileUrl);
    HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
    urlCon.setConnectTimeout(6000);
    urlCon.setReadTimeout(6000);
    int code = urlCon.getResponseCode();
    if (code != HttpURLConnection.HTTP_OK) {
        throw new Exception("文件读取失败");
    }
    // 读文件流
    DataInputStream in = new DataInputStream(urlCon.getInputStream());
    DataOutputStream out = new DataOutputStream(new FileOutputStream(fileLocal));
    byte[] buffer = new byte[2048];
    int count = 0;
    while ((count = in.read(buffer)) > 0) {
        out.write(buffer, 0, count);
    }
    out.close();
    in.close();
}

Java是一门面向对象编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。 Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

java怎样获取url参数

解析url,本想用正则表达式处理,但正则表达式速度较慢。用split处理一下就可以了。

package RequestPackage;
import java.util.HashMap;
import java.util.Map;
public class CRequest {
    /**
     * 解析出url请求的路径,包括页面
     * @param strURL url地址
     * @return url路径
     */
    public static String UrlPage(String strURL) {
        String strPage = null;
        String[] arrSplit = null;
        strURL = strURL.trim().toLowerCase();
        arrSplit = strURL.split("[?]");
        if (strURL.length() > 0) {
            if (arrSplit.length > 1) {
                if (arrSplit[0] != null) {
                    strPage = arrSplit[0];
                }
            }
        }
        return strPage;
    }
    /**
     * 去掉url中的路径,留下请求参数部分
     * @param strURL url地址
     * @return url请求参数部分
     */
    private static String TruncateUrlPage(String strURL) {
        String strAllParam = null;
        String[] arrSplit = null;
        strURL = strURL.trim().toLowerCase();
        arrSplit = strURL.split("[?]");
        if (strURL.length() > 1) {
            if (arrSplit.length > 1) {
                if (arrSplit[1] != null) {
                    strAllParam = arrSplit[1];
                }
            }
        }
        return strAllParam;
    }
    /**
     * 解析出url参数中的键值对
     * 如 "index.jsp?Action=delid=123",解析出Action:del,id:123存入map中
     * @param URL url地址
     * @return url请求参数部分
     */
    public static Map<String, String> URLRequest(String URL) {
        Map<String, String> mapRequest = new HashMap<String, String>();
        String[] arrSplit = null;
        String strUrlParam = TruncateUrlPage(URL);
        if (strUrlParam == null) {
            return mapRequest;
        }
        // 每个键值为一组
        arrSplit = strUrlParam.split("&");
        for (String strSplit : arrSplit) {
            String[] arrSplitEqual = null;
            arrSplitEqual = strSplit.split("=");
            // 解析出键值
            if (arrSplitEqual.length > 1) {
                // 正确解析
                mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]);
            } else {
                if (arrSplitEqual[0] != "") {
                    // 只有参数没有值,不加入
                    mapRequest.put(arrSplitEqual[0], "");
                }
            }
        }
        return mapRequest;
    }
}

测试类

package RequestPackage;
import java.util.Map;
public class TestCRequest {
    /**
     * 用于测试CRequest类
     * @param args
     */
    public static void main(String[] args) {
        // 请求url
        String str = "index.jsp?Action=delid=123sort=";
        // url页面路径
        System.out.println(CRequest.UrlPage(str));
        // url参数键值对
        String strRequestKeyAndValues = "";
        Map<String, String> mapRequest = CRequest.URLRequest(str);
        for (String strRequestKey : mapRequest.keySet()) {
            String strRequestValue = mapRequest.get(strRequestKey);
            strRequestKeyAndValues += "key:" + strRequestKey + ",Value:" + strRequestValue + ";";
        }
        System.out.println(strRequestKeyAndValues);
        // 获取无效键时,输出null
        System.out.println(mapRequest.get("page"));
    }
}

java URL 添加参数的几种简单方式

主要有三种方式,先给大家第一种managed-bean,必须 scope设置为request

<managed-bean>
    <managed-bean-name>nameBean</managed-bean-name>
    <managed-bean-class>demo.NameBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
        <property-name>userName</property-name>
        <value>#{param.name}</value>
    </managed-property>
</managed-bean>

第二种方式:缺点是无法往后台传数据,当然你用javascript做一下动作也可以

<h:inputHidden id="userName" value="#{nameBean.userName}" />

第三种方式,是直接在bean中获得,我认为这种应该是最实用、保险的方式。

public static String getRequestParameter(String name) {
    return (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name);
}