java如果去请求一个网页的数据

我们可以通过在java程序中模拟浏览器一样,把数据抓下来,具体方法是在java程序中set header和cookie,下面是一个例子:

public class NetConnection {

	public static final int MAX_HOTWORDS_FILE_SIZE = 256 * 1024;
	public static void main(String[] args) {
		send("http://tuan.aibang.com/shenzhen/new_2033549.html");
	}

	static  void send(String _url){
		HttpClient http = new HttpClient();
		http.getHttpConnectionManager().getParams().setConnectionTimeout(
				100000);
		GetMethod get = new GetMethod(_url);
		get.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 100000);
		get.setFollowRedirects(false);
		InputStream is;
		String host = "www.aibang.com";
		  try {
	    	  get.setRequestHeader("Host",host);
	   			get.setRequestHeader(
	       			"user-agent",
	       			"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8");
				get.setRequestHeader(
				"Accept",
				"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
	                	get.setRequestHeader("Accept-Language","zh-cn,zh;q=0.5");
	               		get.setRequestHeader("Accept-Charset","GB2312,utf-8;q=0.7,*;q=0.7");
				get.setRequestHeader("Connection","Keep-Alive");
				get.setRequestHeader("Cookie","582081171805; cy=1; __utma=205923334.3209590505032285000.1256126987.1269858466.1270605495.11; __utmz=205923334.1256126987.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ano=0snUeoHWygEkAAAAOTAyZjM3ZjQtNjA2NC00NWYzLWIxNWYtMjRlMDliZjAzYTM3jnk83_pKoSEk-9gwcIFx8jFOXVM1; sid=no4tpkmvedoj3gycvfz1s055; lb.dp=100729098.20480.0000; __utmb=205923334.1.10.1270605495; __utmc=205923334");
	    	  int er = 0;
	    	  er = http.executeMethod(get);
	    	  System.out.println("er="+er);
	    	  if (er == 200) {
	    		  try {
						is = get.getResponseBodyAsStream();
						ReadFile2(is);
					} catch (Exception e) {
						System.out.println("download error="+e);
					}
	    	  }

		  }catch(Exception ex){
			  ex.printStackTrace();
		  }
	}

	//解析inputStream里的数据
	static void ReadFile2(InputStream inputStream){
		byte[] buffer = new byte[1024];
		StringBuffer bab = new StringBuffer();
		int nTotal = 0;

		try {
		do{
			int nBytesRead = inputStream.read(buffer);
			System.out.println("nBytesRead="+nBytesRead);
			if(nBytesRead > 0){
				bab.append(new String(buffer,0,nBytesRead));
				nTotal += nBytesRead;
			}else{
				System.out.println(String.format("download end. file size=%d", nTotal));
				break;
			}

		}while(nTotal < MAX_HOTWORDS_FILE_SIZE);
		System.out.println("bab = "+bab);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

这里要引入这几个包

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

java如果去请求一个网页的数据

时间: 2024-07-30 09:35:57

java如果去请求一个网页的数据的相关文章

使用HttpClient请求一个网页

1 package com.exp.httpdemo; 2 3 import java.io.InputStream; 4 5 import org.apache.http.HttpEntity; 6 import org.apache.http.HttpResponse; 7 import org.apache.http.client.HttpClient; 8 import org.apache.http.client.methods.HttpGet; 9 import org.apache

网络爬虫初步:从访问网页到数据解析

前言: 网络爬虫这个东西看上去还是很神奇的.不过,如果你细想,或是有所研究就知道,其实爬虫并不那么高深.高深的是在我们的数据量很大的时候,就是当我们网络"图"的回环越来越多的时候,应该怎么去解决它. 本篇文章在这里只是起一个抛砖引玉的作用.本文主要是讲解了如何使用Java/Python访问网页并获得网页代码.Python模仿浏览器进行访问网页和使用Python进行数据解析.希望我们以本文开始,一步一步解开网络蜘蛛神秘的一面. 参考: 1.<自己动手写网络爬虫> 2.用pyt

asp网络编程:Web程序中网页间数据传递方法小结

我们总是会遇到这样的情况,需要将数值从一个网页传递到另一个网页.在这篇文章中,向你展示了几种从一个网页向另一个网页传递数值的几种方法.在此例子中,创建的网页由一个文本控件和几个按钮控件组成.在文本框中输入的数据通过被标识在按钮控件中的不同方法从一个网页传递到另一个网页. Response.Redirect 让我们首先看一看如何使用Response.Redirect方法传递数据.这是它们之中最简单的方法.在文本框中输入一些数据,并且当你输入完成数据后,按下“Respose.Redirect”按钮.

java通过url抓取网页数据-----正则表达式

原文地址https://www.cnblogs.com/xiaoMzjm/p/3894805.html [本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西,例如呢?例如天气预报,总不能自己拿着仪器去测吧!当然,要获取天气预报还是用webService好.这里只是举个例子.话不多说了,上看看效果吧. [效果] 我们随便找个天气预报的网站来试试:http://www.weather.com.cn/html/weather/101280101.shtml

.Net Core 3.0后台使用httpclient请求网络网页和图片_使用Core3.0做一个简单的代理服务器

原文:.Net Core 3.0后台使用httpclient请求网络网页和图片_使用Core3.0做一个简单的代理服务器 目标:使用.net core最新的3.0版本,借助httpclient和本机的host域名代理,实现网络请求转发和内容获取,最终显示到目标客户端! 背景:本人在core领域是个新手,对core的使用不多,因此在实现的过程中遇到了很多坑,在这边博客中,逐一介绍下.下面进入正文 正文: 1-启用httpClient注入: 参考文档:https://docs.microsoft.c

多个服务器总结: 将session保存到专门的一个服务器上,所有服务器都去请求数据共享Session

原理:多个服务器间想共享session,就相当于共享取多台主机上的一个变量,所以共享的思路就是让大家都能读取变量,实现的方法可以通过将session保存到专门的一个服务器上,所有服务器都去请求数据,也memcache实现session共享将这些服务器都配置成使用同一组Memcached服务器就可以, 一.提出问题: 为了满足足够大的应用,满足更多的客户,于是我们架设了N台Web服务器(N>=2),在多台Web服务器的情况下,我们会涉及到一个问题:用户登陆一台服务器以后,如果在跨越到另一台服务器的

JAVA web编程经验之: 一个请求一个事务

对于一个web请求,你会开启几个事务呢? 或许你没注意过吧. 又或许你不会对代码,性能要求太高,所以.... 一个请求一个事务, 因为一个事务往往和一个数据库连接关联, 如果开启了多个事务的话,也就意味着多个数据库连接, 性能不高吧? 前提 1.项目的代码结构分层如下: web层 ->  service层 -> infrastructure层(或DAO层) 2.所有事务都添加在 service层, 通过AOP(或其他类似的技术)实现 先看代码(一个Spring Controller 的调用代码

Java中如何判断一个double类型的数据为0?

Java中如何判断一个double类型的数据为0 其实这个问题很简单,只是很多时候考虑复杂了,直接用==判断即可.下面给出测试例子: /**  * 如何判断一个double类型的数据为0  *  * @author leizhimin 2014/8/27 10:31  */ public class Test4 {     public static void main(String[] args) {         double x = 0.00000000000000000;       

java实现从一个数据库查询数据经过处理导入另外一个数据库中

当数据库表中有clob字段或要对表中数据做较复杂处理时就不太好用脚本从一个数据库导入数据到另外一个数据库中了,这时就要通过代码实现了,下面以orale数据库为例代码如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Timestamp; import java.text