我们能够通过在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假设去请求一个网页的数据的更多相关文章

  1. java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片

    我们假设在公司或家里使用网络爬虫去抓取自己索要的一些数据的时候,经常对方的站点有defence机制,会给你的http请求返回500错误,仅仅要是同样IP就请求不到数据,这时候我们仅仅能去重新启动路由器 ...

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

    原文地址https://www.cnblogs.com/xiaoMzjm/p/3894805.html [本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西 ...

  3. java异步线程池同时请求多个接口数据

    一.主要使用类 . ExecutorService java线程池类 申明方式:ExecutorService exc = Executors.newFixedThreadPool(requestPa ...

  4. C#请求http向网页发送数据,网页接收

    首先,我们需要的是什么东西? 用POST方式请求http,给网页传输数据,网页接收到数据之后,把数据存储到数据库中. 1.首先请求http,建立连接,把转码过的数据传输过去 2.网页接收数据,在转码之 ...

  5. 一个java的http请求的封装工具类

    java实现http请求的方法常用有两种,一种则是通过java自带的标准类HttpURLConnection去实现,另一种是通过apache的httpclient去实现.本文用httpclient去实 ...

  6. 如何去设计一个自适应的网页设计或HTMl5

    如何去设计一个自适应的网页设计或HTMl5 如今移动互联网随着3G的普及,越来越火爆,更多需求跟随而来!APP应用市场和APP应用数量成倍成倍的增长!从而给移动互联网带来新的挑战! 移动设备正超过桌面 ...

  7. cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中(转)

    基本概念:cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中. 以博客园为例,我们看看cookie有哪些属性: 1.Name:cookie的名称: 2.V ...

  8. iOS - WKWebView加载不受信任的https (因用到IP地址加端口号去请求数据)

    1.描述:因公司域名临时出现问题,所以项目中引用到了IP地址加端口号去请求数据,因而造成在wkwebView中某些网址打不开,查看错误是因为服务器证书无效,实际就是不受信任; 2.解决办法:在plis ...

  9. python 多进程——使用进程池,多进程消费的数据)是一个队列的时候,他会自动去队列里依次取数据

    我的mac 4核,因此每次执行的时候同时开启4个线程处理: # coding: utf-8 import time from multiprocessing import Pool def long_ ...

随机推荐

  1. 官网下载qt-opensource-windows-x86-mingw482_opengl-5.3.1.exe。封装好了Qt libraries、Qt Creator。只需要这一个可执行程序就好了。

    官网下载qt-opensource-windows-x86-mingw482_opengl-5.3.1.exe( http://qt-project.org/downloads).这个可执行程序已经为 ...

  2. C 一个字符串有三段,第一段原样输出,第二段为要输出字符串的长度,第三段为依据第二段长度补齐第一段

    C 一个字符串有三段,第一段原样输出.第二段为要输出字符串的长度,第三段为依据第二段长度补齐第一段 比如:输入abc 11 12.输出abc12121212 #include<stdio.h&g ...

  3. EJB体系结构

    为了适应企业的快速发展.缩短企业信息系统的设计和开发周期.降低构建信息系统的成本,Sun公司制订了Java2 SDK Enterprise Edition(J2EE)规范,定义基于组件的方式设计.开发 ...

  4. Oracle SQL Lesson (2) - 限制和排序数据

    重建scott用户@?/rdbms/admin/utlsampl.sql@--执行?--$ORACLE_HOME 字符区分大小写:SELECT last_name, job_id, departmen ...

  5. Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask

    原文:Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask 启动器与选择器简单的地方在于,它们的使用方法几乎一模一样,从前面几节中,我相 ...

  6. Ubuntu下hadoop2.4搭建集群(单机模式)

    一  .新建用户和用户组 注明:(这个步骤事实上能够不用的.只是单独使用一个不同的用户好一些) 1.新建用户组 sudo addgroup hadoop 2.新建用户 sudo adduser -in ...

  7. Could not load file or assembly&#39;System.Data.SQLite.dll&#39; or one of its depedencies

    [问题]  在我本机的开发环境c#连接sqlite3没有问题,但是release版本号移植到其它的机器就提示Could not load file or assembly'System.Data. ...

  8. LeetCode204:Count Primes

    Description: Count the number of prime numbers less than a non-negative number, n. 比计算少n中素数的个数. 素数又称 ...

  9. java基础程序题

    发现自己初学java时保存在word里的练习题,哈哈,放博客里面来作为纪念吧~~~ [程序1]  题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔 ...

  10. java ClassLoader static

    package init; class Person { private static Person person = new Person(); public static int count2 = ...