`
ljl_xyf
  • 浏览: 636637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 抓取网页内容,可设定代理(HttpURLConnection)

    博客分类:
  • java
阅读更多

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Properties;

/**
 **网页抓取 通用类
 * @author
 */

public class WebClient {

    /**
     *代理服务器的地址
     */

    private static String proxyHost;
    /**
     * 代理服务器的端口
     */

    private static String proxyPort;
    /**
     * 代理服务器用户名
     */

    private static String proxyUser;
    /**
     * 代理服务器密码
     */

    private static String proxyPassword;

    /**
     *网页抓取方法
     * @param urlString      要抓取的url地址
     * @param charset        网页编码方式
     * @param timeout        超时时间
     * @return               抓取的网页内容
     * @throws IOException   抓取异常
     */

    public static String GetWebContent(String urlString, final String charset, int timeout) throws IOException {
        if (urlString == null || urlString.length() == 0) {
            return null;
        }
        urlString = (urlString.startsWith("http://") || urlString.startsWith("https://")) ? urlString : ("http://" + urlString).intern();
        URL url = new URL(urlString);


        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        GetProxy();
        conn.setRequestProperty(
                "User-Agent",
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");//增加报头,模拟浏览器,防止屏蔽
        conn.setRequestProperty("Accept", "text/html");//只接受text/html类型,当然也可以接受图片,pdf,*/*任意,就是tomcat/conf/web里面定义那些

        conn.setConnectTimeout(timeout);
        try {
            if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
                return null;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        InputStream input = conn.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(input,
                charset));
        String line = null;
        StringBuffer sb = new StringBuffer();
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\r\n");
        }
        if (reader != null) {
            reader.close();
        }
        if (conn != null) {
            conn.disconnect();
        }
        return sb.toString();

    }

    /**
     * 网页抓取方法
     * @param urlString      要抓取的url地址
     * @return               抓取的网页内容
     * @throws IOException   抓取异常
     */

    public static String GetWebContent(String urlString) throws IOException {
        return GetWebContent(urlString, "iso-8859-1", 5000);
    }

    /**
     * 网页抓取方法
     * @param urlString      要抓取的url地址
     * @param pageCharset  目标网页编码方式
     * @return               抓取的网页内容
     * @throws IOException   抓取异常
     */

    public static String GetWebContent(String urlString, String pageCharset) throws IOException {
        String strHTML = GetWebContent(urlString, "iso-8859-1", 5000);
        String StrEncode = new String(strHTML.getBytes("iso-8859-1"), pageCharset);
        return StrEncode;
    }

    /**
     * 设定代理服务器
     * @param proxyHost
     * @param proxyPort
     */

    public static void SetProxy(String proxyHost, String proxyPort) {
        SetProxy(proxyHost, proxyPort, null, null);
    }

    /**
     * 设定代理服务器
     * @param proxyHost       代理服务器的地址
     * @param proxyPort       代理服务器的端口
     * @param proxyUser       代理服务器用户名
     * @param proxyPassword   代理服务器密码
     */

    public static void SetProxy(String sproxyHost, String sproxyPort, String sproxyUser, String sproxyPassword) {
        proxyHost = sproxyHost;
        proxyPort = sproxyPort;
        if (sproxyPassword != null && sproxyPassword.length() > 0) {
            proxyUser = sproxyUser;
            proxyPassword = sproxyPassword;
        }
    }

    /**
     * 取得代理设定
     * @return
     */

    private static Properties GetProxy() {
        Properties propRet = null;
        if (proxyHost != null && proxyHost.length() > 0) {
            propRet = System.getProperties();
            // 设置http访问要使用的代理服务器的地址
            propRet.setProperty("http.proxyHost", proxyHost);
            // 设置http访问要使用的代理服务器的端口
            propRet.setProperty("http.proxyPort", proxyPort);
            if (proxyUser != null && proxyUser.length() > 0) {
                //用户名密码
                propRet.setProperty("http.proxyUser", proxyUser);
                propRet.setProperty("http.proxyPassword", proxyPassword);
            }
        }

        return propRet;
    }

    /**
     * 类测试函数
     * @param args
     * @throws IOException
     */

    public static void main(String[] args) throws IOException {
        //SetProxy("10.10.10.10", "8080");//代理服务器设定
        String s = GetWebContent("http://www.my400800.cn ", "utf-8");      
        System.out.println(s);
    }
}

分享到:
评论

相关推荐

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

    通过上述分析我们可以看出,Java抓取网页数据主要依赖于`java.net.HttpURLConnection`和`java.util.regex.Pattern`等类。这些工具能够帮助开发者轻松地构建网络请求,并通过正则表达式解析响应内容。此外,还需注意...

    java实现WebSpider蓝蜘蛛网页抓取.zip

    Java实现WebSpider,也被称为网络爬虫或网页抓取,是一种自动浏览互联网并提取网页信息的技术。在本项目中,"蓝蜘蛛"是这个爬虫程序的代号,它使用Java编程语言进行开发。Java因其跨平台性、稳定性和丰富的库支持,...

    爬虫搜索,简单的搜索引擎,java爬虫,搜索引擎例子,爬虫demo,java实现互联网内容抓取,搜索引擎大揭密

    Java爬虫程序通常会利用HttpURLConnection或HttpClient等类库来发送HTTP请求,获取网页HTML内容。接着,使用Jsoup或BeautifulSoup等解析库解析HTML,提取所需数据,如文本、链接等。对于定时任务,可以结合Quartz或...

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

    5. **深度限制**:设定爬虫抓取的深度,避免无限制地遍历网页。这可以通过维护一个表示层级的变量来实现,每访问一个新链接,层级加一,超过设定值则停止。 6. **异步处理**:为了提高效率,可以考虑使用多线程或...

    现实网页下载java源代码

    在IT行业中,网页下载是一个常见的需求,特别是在自动化测试、数据抓取或备份网站内容时。本项目提供的"现实网页下载java源代码"旨在帮助开发者实现这一功能。Java作为一种多用途的编程语言,提供了多种方法来下载...

    Java网页爬虫类源码

    Java网页爬虫是一种用于自动化获取网页内容的程序,它能够模拟浏览器的行为,通过HTTP或HTTPS协议与服务器交互,抓取并解析网页上的信息。在这个Java网页爬虫类源码中,我们可以深入理解如何构建一个基本的网络爬虫...

    [其他类别]WebSpider蓝蜘蛛网页抓取 v5.1_webspider.zip

    【标题】WebSpider蓝蜘蛛网页抓取 v5.1 是一款专用于网页数据抓取的软件,它在Java平台上开发,适用于毕业设计等项目。这款工具可以帮助用户自动化地从互联网上搜集信息,提取有价值的数据,为数据分析、网站内容...

    url域名抓取

    在IT行业中,"URL域名抓取"是一种常见的网络数据挖掘技术,主要目的是从网页或互联网上批量收集和整理URL(统一资源定位符),也就是我们常说的网址。这项技术广泛应用于搜索引擎优化、数据分析、市场研究等领域。...

    java做的一个类似网页爬虫的东西

    网页爬虫是互联网数据挖掘的一种常见工具,它自动地遍历网络,抓取网页内容,为数据分析、信息提取等提供便利。在这个项目中,我们看到的标题是“java做的一个类似网页爬虫的东西”,这意味着作者使用Java编程语言...

    html转换pdf 页面抓取内容,分页进行处理,后台进行处理,功能效果不错

    例如,iText和Flying Saucer等库支持在转换过程中自动分页,根据设定的纸张大小和边距进行内容布局。 4. **样式处理**:HTML中的CSS样式需要被正确地转换为PDF的样式。这包括字体、颜色、布局等。一些库会尽可能地...

    java爬虫,以爬取sohu新闻为例

    Java爬虫技术是一种用于自动化网页数据提取的编程技术,它可以帮助开发者从互联网上获取大量信息。在这个案例中,我们以爬取搜狐新闻为例,但同样的方法可以应用于其他网站,如网易和新浪。以下是对这个Java爬虫项目...

    java 爬虫源码

    总之,这个"java 爬虫源码"项目提供了一个基础的网络爬虫实现,使用广度优先策略进行网页抓取,并允许用户设置爬取深度。通过学习和理解这个源码,开发者可以掌握网络爬虫的基本原理和Java实现方法,为进一步开发更...

    java下载网络图片到本地保存

    在Java编程中,下载网络图片并将其保存到本地是一个常见的任务,特别是在开发涉及网页抓取、数据备份或者网络资源管理的项目中。这个过程通常包括以下几个步骤:建立网络连接、发送请求、接收响应数据以及将数据保存...

    java编写的爬虫demo

    9. **多级页面抓取**:一个完整的爬虫不仅限于抓取单个页面,还可能需要跟踪链接,抓取整个网站或特定内容的网页。 10. **动态内容处理**:现代网页常使用JavaScript来动态加载内容,如Ajax请求。这时,可能需要...

    使用Java编写爬虫,一键获取CSDN文章内容.zip

    Java作为一门广泛使用的编程语言,拥有强大的网络请求库,如HttpURLConnection、HttpClient和OkHttp等,这些库可以帮助我们发送HTTP请求,获取网页内容。在本项目中,我们将利用这些库来访问CSDN的文章页面,并下载...

    java爬取亚马逊的Iphone信息

    在本项目中,我们主要探讨如何使用Java编程语言来实现一个网络爬虫,目标是抓取亚马逊网站上关于iPhone的相关信息。爬虫是自动化获取网页数据的重要工具,它可以帮助我们批量收集、处理和分析网络上的大量信息。在这...

    java图片爬虫程序,包括连接数据库

    Java图片爬虫程序是一种利用Java编程语言开发的自动化工具,用于在网络上抓取并下载指定网页上的图片资源。这种程序通常包含多个关键模块,包括网络请求、HTML解析、图片下载以及数据存储。在这个案例中,爬虫还具备...

    JAVA基于网络爬虫的搜索引擎设计与实现.pdf

    在Java环境下,利用HTTPURLConnection进行网页下载,使用正则表达式或DOM解析库解析HTML,构建URL队列和网页内容数据库。通过实验验证,该搜索引擎能够有效地抓取和处理网页,为用户提供精准的搜索结果。 五、结论 ...

    java爬虫简单实现

    Java爬虫是一种使用Java编程语言实现的网络爬虫技术,主要用于自动抓取互联网上的信息。在Java中,我们可以利用各种库来构建一个简单的爬虫,例如Jsoup、Apache HttpClient、WebMagic等。以下是对Java爬虫实现的一些...

    基于java爬取股票数据的一个项目.zip

    9. **定时任务(Scheduled Tasks)**:如果项目需要定期抓取数据,可能会用到Java的ScheduledExecutorService或者Quartz等调度框架,设定定时任务来按需更新股票数据。 10. **数据清洗与预处理**:抓取的数据可能...

Global site tag (gtag.js) - Google Analytics