`
jaenson
  • 浏览: 189007 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Java代码实现远程网页抓取

阅读更多
一、返回头信息的获取

步骤:

1、定义URL对象并初始化;

2、定义URLConnection对象,并通过URL对象的openConnection()方法获取该对象;
3、调用URLConnection对象的connect()方法实现和服务器的连接;

4、通过URLConnection对象获取请求头的域信息(getHeaderFields()、getHeaderField(key));

5、使用URLConnection对象的方法来获取信息。

示例:

              String urlName = "http://www....com ";

              try {

                     URL url = new URL(urlName);

                    URLConnection connection = url.openConnection();

                    connection.connect();

                      // print header fields

                     Map<String, List<String>> headers = connection.getHeaderFields();

                     for (Map.Entry<String, List<String>> entry : headers.entrySet()) {

                            String key = entry.getKey();

                            for (String value : entry.getValue()) {

                                   System.out.println(key + ": " + value);

                            }

                     }

 
                     // print convenience functions

                     System.out.println("------------------------");

                     System.out.println("getContentType:" + connection.getContentType());

                     System.out.println("getContentLength:"

                                   + connection.getContentLength());

                     System.out.println("getContentEncoding:"

                                   + connection.getContentEncoding());

                     System.out.println("getDate:" + connection.getDate());

                     System.out.println("getExpiration:" + connection.getExpiration());

                     System.out.println("getLastModified:"

                                   + connection.getLastModified());

                     System.out.println("------------------------");

 
                     Scanner in = new Scanner(connection.getInputStream());

                     // print first ten lines of contents

                     for (int n = 1; in.hasNextLine() && n <= 10; n++) {

                            System.out.println(in.nextLine());

                     }

                     if (in.hasNextLine())

                            System.out.println("...");

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

  
二、带参数的请求

       在默认情况下,建立的连接只有从服务器读取信息的输入流,并没有任何之行写操作的输出流。如果想获取输出流(例如,想一个Web服务器提交数据),那么需要调用:connection.setDoOutput(true);

 
示例:

              String urlName = "……";

              Map<String, String> paras = new HashMap<String, String>();

              paras.put("flightway", "Single");

 
              String result;

              try {

                     result = doPost(urlName, paras);

                     System.out.println(result);

              } catch (IOException e) {

                     e.printStackTrace();

              }

 
       public static String doPost(String rlString,

                     Map<String, String> nameValuePairs) throws IOException {

              URL url = new URL(rlString);

              URLConnection connection = url.openConnection();

              connection.setDoOutput(true); 

              PrintWriter out = new PrintWriter(connection.getOutputStream());

              boolean first = true;

              for (Map.Entry<String, String> pair : nameValuePairs.entrySet()) {

                     if (first)

                            first = false;

                     else

                            out.print('&');

                     String name = pair.getKey();

                     String value = pair.getValue();

                     out.print(name);

                     out.print('=');

                     out.print(URLEncoder.encode(value, "GB2312"));//UTF-8

              }

              out.close(); 
              Scanner in;

              StringBuffer response = new StringBuffer();

              try {

                     in = new Scanner(connection.getInputStream());

              } catch (IOException e) {

                     if (!(connection instanceof HttpURLConnection))

                            throw e;

                     InputStream err = ((HttpURLConnection) connection).getErrorStream();

                     if (err == null)

                            throw e;

                     in = new Scanner(err);

              }

 
              while (in.hasNextLine()) {

                     response.append(in.nextLine());

                     response.append("\n");

              }

 
              in.close();

              return response.toString();

       }

备注:

import java.io.*;import java.net.*;import java.util.*;


huc.setDoOutput(true);

// 设置为post方式

huc.setRequestMethod("POST");

huc.setRequestProperty("user-agent", "mozilla/4.7 [en] (win98; i)");


转载自:http://incan.iteye.com/blog/279000
分享到:
评论

相关推荐

    java读取远程网页乱码解决方案

    在Java编程中,读取远程网页内容是一项常见的任务,但可能会遇到编码问题导致乱码。本文将深入探讨这个问题,提供有效的解决方案,确保正确地读取和处理远程网页的字符编码。 首先,理解网页编码至关重要。网页通常...

    Java连接实现代码 (JAVA代码和VC代码 已更正)

    在Java编程语言中,连接实现通常指...VC代码可能与Java代码配合,例如,Java负责网络通信,而VC代码处理数据解析或其他特定功能。如果你需要更具体的代码实现或对某个知识点有深入理解的需求,请提供更多的上下文信息。

    httpclient远程网页抓取工具

    HTTPClient是Apache软件基金会的 HttpClient项目提供的一款Java库,它为Java程序员提供了强大的HTTP客户端功能,使得能够方便地进行网络请求和网页抓取。在本文中,我们将深入探讨HTTPClient库的基本概念、主要功能...

    JAVA通过url获取网页内容

    在网页抓取程序中,需要获取网页内容以存储到数据库中。在 web 服务中,需要获取网页内容以提供给用户。 五、获取网页内容的注意事项 在获取网页内容时,需要注意以下几点: * 需要检查 URL 是否正确,以免出现...

    Java下载图片代码+教程

    比如,在爬虫项目中抓取网页中的图片资源,或者在构建图片分享应用时需要从远程服务器下载图片显示在客户端等场景。本文将通过一个简单的示例来介绍如何使用Java语言编写程序来下载指定URL地址的图片。 #### 二、...

    基于JAVACS远程监控系统软件的实现.pdf

    根据文件提供的信息,我们可以从中提炼出多个关于JAVACS远程监控系统软件实现相关的知识点。以下为详细知识点内容: 1. Java语言与JAVACS远程监控系统的关联 JAVACS远程监控系统是使用Java语言开发的,这可能是因为...

    远程桌面控制程序完整代码,直接运行可用

    Java的`java.awt.image`包提供了图像读取、写入和处理的功能,可以用来抓取远程桌面的屏幕快照,并将其编码为适合网络传输的格式(如JPEG或PNG)。 6. **加密与安全**:由于远程桌面控制涉及到敏感的数据传输,程序...

    安卓Android源码——实现远程控制PC源代码.rar

    总的来说,这个"安卓Android源码——实现远程控制PC源代码"项目涵盖了Android应用开发的多个核心领域,对于深入理解和掌握Android系统及网络编程有极大的帮助。通过分析和学习这些源码,开发者可以提升自己的技能,...

    java代码抓取网页邮箱的实现方法

    总结来说,Java代码抓取网页邮箱的实现方法涉及到了网络编程的基本组件,如URL、URLConnection和InputStream,以及处理文本的工具,如BufferedReader和正则表达式。这个过程通常被用于爬虫或数据分析等场景,以自动...

    【Java代码-A001】- 文件

    在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用和网络编程方面表现出色。...通过学习和实践这些代码,你可以深入理解Java在网络编程中的应用,并掌握如何利用Java实现网页图片的下载和保存。

    java远程监控源码

    标题“Java远程监控源码”涉及的是Java编程中关于远程监控和控制的实现。这个项目可能包含一个客户端(client)和服务器端(server)的架构,通过Socket通信进行数据交互,利用Java Robot类来捕获屏幕图像,以及...

    远程监控实现原理

    在Delphi代码实现中,可以结合以上策略编写屏幕抓取和数据压缩的模块。同时,考虑到解压缩速度,应尽量选择计算复杂度较低且能快速解压的算法,以保证客户端的显示效果。 总结来说,远程监控实现原理主要包括屏幕...

    利用java实现一个简单的远程监控程序资料.pdf

    以下是一段Java代码示例,展示如何使用`Robot`类抓取屏幕快照并发送给监控端: ```java // 客户端截屏并发送 GuiCamera.java BufferedImage screenshot = (new Robot()).createScreenCapture(new Rectangle(0, 0, ...

    java远程屏幕监控

    Java远程屏幕监控是一种技术,允许一个程序或系统从一个位置获取另一个位置的计算机屏幕的实时视图。在Java中实现这种功能通常涉及到网络编程、图形用户界面(GUI)以及可能的多线程技术。这个压缩包包含客户端和...

    java驱动 加载java版的网页

    其工作原理是通过Java代码发送HTTP命令到WebDriver服务器,服务器再将这些命令转发给目标浏览器,从而实现对浏览器的远程控制。 要使用Java驱动加载网页,首先需要在项目中引入Selenium的依赖库。如果是Maven项目,...

    抓取屏幕图像并在视图窗口中显示

    而在跨平台的环境中,如使用Java,我们可以利用AWT或Swing库中的`Robot`类来实现屏幕抓取功能。 接下来,我们要将抓取到的图像在视图窗口中显示。这通常涉及到图形用户界面(GUI)的开发。在不同的编程语言和框架中...

    Java网络屏幕监控(把客户端屏幕截图实时发送到主机端)

    在Java编程领域,实现"Java网络屏幕监控(把客户端屏幕截图实时发送到主机端)"是一项技术挑战,涉及到网络通信、图像处理以及文件传输等多个知识点。在这个项目中,`WnetWScreenRecorder.java`作为客户端负责捕获并...

    抓图程序 JAVA版 用JAVA写的抓图程序

    这个项目是基于Java语言开发的一款抓图工具,主要用于从网页中批量抓取图片并保存到本地形成一个文件夹。在网页抓取领域,这样的工具非常实用,尤其是在处理包含大量图片的网站时,能够帮助用户快速下载和整理所需...

    远程控制端的实现

    屏幕抓取实现 屏幕抓取的实现主要包括获取屏幕尺寸、创建屏幕捕获对象、将屏幕图像转换为字节流和发送字节流数据。 - **获取屏幕尺寸**: ```java Toolkit toolkit = Toolkit.getDefaultToolkit(); Dimension ...

    远程获取网页数据并分析

    在IT行业中,远程获取网页数据并进行分析是一项常见的任务,特别是在大数据分析、网络监控和爬虫项目中。这里,我们关注的是如何利用`Timer`和`TimerTask`这两个Java类来实现定时执行这类任务。`Timer`和`TimerTask`...

Global site tag (gtag.js) - Google Analytics