`

java中根据url抓取html页面内容的方法

    博客分类:
  • java
 
阅读更多

方法一:URLConnection

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class HttpRequest {

	/**
     * 向指定URL发送GET方法的请求
     * @param url
     * 发送请求的URL
     * @param param
     * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return URL 所代表远程资源的响应结果
     */
    public static String sendGet(String url, String param) {
        String result = "";
        BufferedReader in = null;
        try {
            String urlNameString = url + "?" + param;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }
 
    /**
     * 向指定 URL 发送POST方法的请求
     * @param url
     * 发送请求的 URL
     * @param param
     * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 
     * 所代表远程资源的响应结果
     */
    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!"+e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    } 
}

方法二:

public static String getHtml(String urlString) {
		try {
			StringBuffer html = new StringBuffer();
			URL url = new URL(urlString);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			InputStreamReader isr = new InputStreamReader(conn.getInputStream());
			BufferedReader br = new BufferedReader(isr);
			String temp;
			while ((temp = br.readLine()) != null) {
				html.append(temp).append("\n");
			}
			br.close();
			isr.close();
			return html.toString();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

 

分享到:
评论

相关推荐

    JAVA线程根据给定URL生成网页快照

    在Java编程中,生成网页快照是一项常见的任务,它主要用于数据抓取、搜索引擎优化(SEO)或者是为了离线浏览。这个任务通常涉及到网络编程、多线程和网页解析技术。以下将详细介绍如何根据给定的URL利用Java实现线程...

    java web网站常用抓取其他网站内容

    4. **处理JavaScript**:很多现代网站使用JavaScript动态加载内容,单纯抓取HTML可能无法获取完整数据。这时需要利用如Selenium WebDriver这样的工具模拟浏览器执行JavaScript,获取动态渲染后的页面内容。 5. **...

    java URL转PDF文件(完美支持中文)

    在Java编程环境中,将URL内容转换为PDF文件是一项常见的需求,尤其在数据抓取、文档保存或自动化报告生成等场景中。"java URL转PDF文件(完美支持中文)"的主题着重于如何利用Java库来实现这一功能,并且确保中文字符...

    Java抓取网页内容三种方式

    本文将介绍使用 Java 语言抓取网页内容的三种方式:使用 URL 连接、使用 HttpURLConnection 和使用 Apache HttpClient。 第一种方式:使用 URL 连接 使用 URL 连接是最简单的抓取网页内容的方式。它使用 java.net....

    java简单抓取网页内容

    在Java编程语言中,抓取网页内容是一项常见的任务,尤其对于数据分析、信息提取以及网络爬虫等应用场景。本文将深入探讨如何使用Java实现简单的网页内容抓取,适合初学者入门学习。 首先,我们需要理解网页抓取的...

    Java实现网页抓取

    在这个Java实现网页抓取的项目中,我们将探讨如何利用Java编程语言来抓取网页内容。下面将详细介绍这个过程涉及的关键知识点。 1. **网络基础知识**:首先,理解HTTP协议是必要的,它是互联网上应用最广泛的一种...

    基于JAVA技术的网页内容智能抓取

    【基于JAVA技术的网页内容智能抓取】是一个利用Java编程语言实现的网页内容抓取系统,它结合了XML解析、HTML解析以及多种开源组件来高效地获取和处理网络上的信息。核心技术和组件包括: 1. **XML解析**:DOM4J被...

    Java抓取网页数据Demo

    本文将详细讨论如何使用Java语言来抓取网页数据,包括两种主要方法:直接抓取原网页内容和处理网页中的JavaScript返回数据。 首先,让我们探讨**抓取原网页**的方法。在Java中,我们可以使用`java.net.URL`类来建立...

    java抓取网页内容--生成静态页面

    这个程序的主要目的是从指定的URL抓取网页内容,并将其保存为一个HTML文件,即静态页面。下面将详细讲解这个过程涉及的关键知识点。 1. **网络请求**: 在Java中,我们可以使用`java.net`包中的`URL`类来表示一个...

    java网页抓取demo

    在这个Java网页抓取示例中,HTTP Client库用于发起HTTP请求,获取网页内容。httpclient-4.1.2.jar和httpcore-4.2.1.jar分别是HTTP Client的核心库和基础核心组件,它们负责网络通信的部分。 在主类文件中,通常会...

    JAVA实现的能抓取网站url提供分析等功能

    在Java编程语言中,实现一个能抓取网站URL并提供分析功能的系统涉及到多个关键知识点。这个系统通常被称为网络爬虫或网页抓取工具,它能够自动遍历互联网上的页面,提取所需信息,并进行一定程度的分析。以下是一些...

    基于JAVA技术的网页内容智能抓取.doc

    本文档主要探讨了基于JAVA技术实现网页内容智能抓取的方法、架构以及核心技术和业务流程。 一、架构 该系统完全基于JAVA开发,体现了JAVA作为一种强大的后端开发语言的优势。其架构主要包括以下几个部分: 1. XML...

    java根据url获取html源文件

    在Java编程中,获取一个网页的HTML源文件是常见的任务,尤其在进行网络爬虫或者数据分析时。这个过程涉及到URL类、HTTP协议以及输入/输出流的使用。下面将详细解释如何实现这一功能。 首先,Java中的`java.net.URL`...

    java网络编程抓取指定网页信息--UrlHtml(java源码)

    import java.net.URL; public class UrlHtml { @SuppressWarnings("deprecation") public static void main(String[] s) throws IOException{ try { URL url = new URL("http://www.kum.net.cn"); ...

    java抓取与采集页面内容 喜欢的拿去研究下

    Java 抓取与采集页面内容是一项常见的任务,特别是在大数据分析、搜索引擎优化(SEO)和网络监控等领域。这个压缩包中的两个文件,`HttpCon.java` 和 `ChunkedInputStream.java`,可能包含了实现这一功能的基本组件...

    Java抓取URL/Email实例源码

    接着,解析网页内容是抓取URL和Email的关键步骤。HTML是网页的主要结构语言,因此,我们需要对HTML文档进行解析。Java的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`接口可以用来创建和操作...

    java利用htmlparser抓取网页数据

    在这个例子中,我们创建了一个`Parser`对象,传入要抓取的网页URL。然后通过`elements()`方法获取一个迭代器,遍历HTML中的所有节点。当找到`&lt;title&gt;`标签时,我们提取并打印出网页的标题。 HTMLParser库还支持更...

    java抓取任何指定网页的数据

    重点在于介绍抓取网页数据的方法、解析数据的手段,以及具体实施过程中的关键步骤。 #### 抓取网页数据的重要性 在大数据时代背景下,从互联网上抓取数据变得尤为重要。这不仅能够帮助企业更好地了解市场动态,还能...

    html网页内容抓取

    在IT领域,HTML网页内容抓取是一项常见的任务,特别是在数据挖掘、网络分析和自动化测试中。这个主题涉及到网络爬虫(Web Crawler)的概念,它允许我们自动化地从互联网上获取大量的HTML信息。以下是对“html网页...

    java抓取网页数据

    在“java抓取网页数据”这个主题中,我们将深入探讨如何利用Java来抓取并处理互联网上的信息。 首先,我们要了解什么是网络爬虫。网络爬虫(Web Crawler)是自动遍历互联网的程序,通过抓取网页内容并存储在本地,...

Global site tag (gtag.js) - Google Analytics