基于网络流的方式读取特定URL资源。
通过网络流连接(URLConnection)对象,设定请求相关属性;根据表单提交方式(POST|GET)设置远程网络流请求方式;通过网络输出流对象追加请求参数列表;同时,需注意要设定是否打开网络输出流对象以便读取返回的网络流数据;
package org.fanzone.net;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Title: base<br>
* Description: Grab Data from URL resource.<br>
* Copyright: Copyright (c) 2011 <br>
* Create DateTime: Jul 7, 2011 5:41:07 PM <br>
* @author wangmeng
*/
public class Grab {
/**
* Read out stream and fill it into a specified file.
* @param is
* @param filePath
*/
private static void readerHandle(InputStream is, String filePath){
BufferedReader br = null;
BufferedWriter bw = null;
File file = null;
String content = "";
try {
file = new File(filePath);
if(file.exists()){
file.delete();
}
file.createNewFile();
br = new BufferedReader(new InputStreamReader(is));
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
while(null != (content = br.readLine())){
bw.append(content);
}
bw.close();
br.close();
Runtime.getRuntime().exec("explorer " + filePath + "");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
final String TARGET_URL = "http://www.SunnySoLong.com/net/grab.do";
URL url = null;
HttpURLConnection connection = null;
String linkParams = "";
try {
url = new URL(TARGET_URL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Connection","close");
connection.setRequestProperty("Keep-Alive","close");
connection.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); .NETSPX2; .NET CLR 2.0.50727)");
connection.setRequestProperty("Cache-Control","no-cache");
connection.setRequestMethod("POST");
connection.setDoOutput(true);
linkParams="man=sun&woman=moon";
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", "" + (linkParams.getBytes()).length );
connection.setRequestProperty("Referer",TARGET_URL);
/** Append Parameters */
OutputStream output = connection.getOutputStream();
output.write(linkParams.getBytes());
output.flush();
output.close();
connection.connect();
System.out.println(connection.getResponseCode());
System.out.println("start ...");
readerHandle(connection.getInputStream(),"C:\\grab.html");
System.out.println("end ...");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
Snoopy是一个PHP库,专门用于模拟浏览器行为,进行HTTP请求,尤其是处理表单提交和登录过程,从而实现网页数据的抓取。本篇文章将详细介绍如何使用Snoopy库进行模拟表单提交和数据抓取。 首先,我们需要了解Snoopy...
本教程将详细介绍如何抓取使用AMF协议的Flex页面数据,并涉及模拟登录和页面抓取的相关知识。 1. **AMF简介** - AMF是一种高效的数据序列化格式,用于在Flex客户端和服务器之间传输数据。它比XML或JSON更快,因为...
它们提供了发送HTTP请求并接收响应的功能,是抓取网页数据的基础。 2. **HTML解析**:解析HTML文档以提取所需数据,可以使用Jsoup库。Jsoup支持CSS选择器,能够方便地定位到网页元素,并提供API进行元素的操作和...
接着,我们使用Document.Forms来submit表单,并将要抓取的数据存储在变量中。最后,我们使用MsgBox来显示抓取的数据。 使用HttpRequest抓取数据 在上面的代码中,我们使用HttpRequest来抓取HTML数据。首先,我们...
在本项目中,我们关注的是一个由Linux环境下用C语言编写的程序,其核心功能是抓取网页并解析其中的表单数据。 首先,让我们详细了解一下网页抓取。网页抓取通过模拟浏览器的行为,向服务器发送HTTP请求来获取HTML...
对于更复杂的数据抓取任务,例如模拟表单提交或者处理JavaScript渲染的页面,可以考虑使用像Selenium这样的自动化测试工具,它可以驱动真实或模拟的浏览器执行用户操作。 另外,如果需要抓取的数据是以JSON或XML...
// 请求数据 private String method = "GET"; // 请求方法 private String charset = "GBK"; // 字符集 private String pattern; // 正则表达式 // 发送请求并处理响应 try { URL url = new URL(target); // 创建...
POST请求通常用于提交表单数据,而不仅仅是获取静态网页内容。在本文中,我们将深入探讨如何使用C#实现这个功能,以及相关的重要知识点。 首先,要模拟POST请求,我们需要理解HTTP协议的基本原理。POST请求包括一个...
在IT行业中,数据抓取是一项重要的技能,尤其在大数据时代,获取有效信息并进行分析是很多企业和个人的需求。本项目涉及的主题是“天眼查公司数据抓取、自动登录、跳转抓取、翻页及写入数据库”。下面将详细阐述这个...
在PHP开发中,有时我们需要获取一些需要用户登录后才能访问的网页内容,此时可以借助Curl库来模拟登录过程并抓取数据。Curl库是一个强大的URL处理工具,支持多种协议,包括HTTP、HTTPS等,它能让我们在PHP中发送HTTP...
Python爬虫抓取手机APP的传输数据 本文主要介绍了使用 Python 爬虫抓取手机 APP 的传输数据,特别是抓取超级课程表 APP 里用户发的话题。整个过程可以分为三个部分:抓取 APP 数据包、登录和抓取数据。 一、抓取 ...
POST请求常用于向服务器提交数据,比如填写表单或进行用户注册。与GET请求不同,POST请求的数据不会显示在URL中,而是包含在请求体里,因此更适合传输敏感信息。 数据抓取的过程中,可能会遇到需要登录的网站。在...
通过编写简单的自动化程序,您可以查询 Web 服务器、请求数据并解析数据以提取所需的信息。这个彻底更新的第三版不仅向您介绍了网络抓取,而且还作为从现代网络抓取几乎所有类型数据的综合指南。 第一部分重点介绍...
5. **发送登录请求**:执行POST请求,模拟用户提交登录表单。 6. **处理登录响应**:接收服务器返回的响应,检查是否登录成功。这可以通过检查重定向URL、特定的HTML内容或Cookie来判断。 7. **后续抓取**:如果...
在Web开发和数据抓取领域,Java爬虫技术是实现网页自动化信息提取的重要手段。本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据...
【影刀RPA系列公开课3:网页自动化——数据抓取】是针对RPA(Robotic Process Automation)技术的一堂深入讲解课程,主要聚焦于如何利用RPA工具进行网页自动化操作,特别是数据抓取这一关键环节。RPA是一种新兴的...
在IT行业中,模拟登录和提交表单是网络自动化和数据抓取的重要技术,常用于测试、数据分析或自动化脚本编写。这里的"post模拟登录,提交表单"涉及到HTTP请求方式中的POST方法,以及如何处理登录过程和后续的表单提交...
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。 2. **URL**:统一资源定位符,用来标识互联网上的某个资源。 3. **编码格式**:网页通常采用不同的字符编码格式,...
为了便于理解,文章将分几个部分进行阐述:HTTP请求与响应、模拟登录过程、维持会话状态、数据抓取与处理。 ### HTTP请求与响应 在网络编程中,模拟用户登录首先需要构造一个HTTP POST请求。在给定的代码中,使用...
该项目是一个专为ACM竞赛团队设计的数据管理系统,它结合了数据抓取和展示功能,全部基于Python编程语言和Django框架构建。这个系统的目的是为了帮助团队有效地收集、处理和展示与ACM竞赛相关的各种信息,从而提升...