웹 페이지 캡 처 및 해석 수기

프로젝트 에서 누군가가 comons. httpclient 에 가서 웹 페이지 를 찾 았 다.도구 로 봉 인 했 지만 사용 할 때 전 달 된 페이지 내용 을 발 견 했 습 니 다. 미리 생각 한 정규 표현 식 이 갑자기 find 로 false 로 돌 아 왔 습 니 다.어 쩔 수 없 이 페이지 내용 을 콘 솔 에 출력 하고 txt 로 복사 하여 페이지 와 대응 하 는 형식 으로 저장 한 다음 테스트 프로그램 이 파일 에서 읽 은 다음 정규 로 일치 하 는 것 을 보 니 효과 가 좋 습 니 다.그래서 후후, 도구 에 있 는 코드 를 새 httpclient 로 바 꾸 었 습 니 다.문제 가 해결 되 었 다.
   왜?
   재 봐!
   commons 표기 법
package com.sikaijian.http.test;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;

public class HttpMethodCrawler {
	public static void main(String[] args) {
		HttpMethod method = null;
		HttpClient client = new HttpClient();
		method = new GetMethod(
				"http://so.v.ifeng.com/video?q=%E6%B9%96%E4%BA%BA&c=5&s=0&category=&dualt=0&dualf=0&pubtime=&categoryroot=&p=1");
		int status;
		try {
			status = client.executeMethod(method);
			if (status == HttpStatus.SC_OK) {
				byte[] bodyArr = method.getResponseBody();

				String respStr = new String(bodyArr, "utf-8");

				File f = new File("f:/method.txt");
				if (!f.exists())
					f.createNewFile();

				PrintWriter pw = new PrintWriter(f);
				pw.write(respStr);

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

	}
}

    새 판 표기 법
package com.sikaijian.http.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class HttpGetCrawler {
	public static void main(String[] args) {
		HttpGet httpget = new HttpGet(
				"http://so.v.ifeng.com/video?q=%E6%B9%96%E4%BA%BA&c=5&s=0&category=&dualt=0&dualf=0&pubtime=&categoryroot=&p=1");
		HttpClient client = new DefaultHttpClient();

		try {

			HttpResponse response = client.execute(httpget);
			HttpEntity entity = response.getEntity();
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					entity.getContent(), "utf-8"));
			int status = response.getStatusLine().getStatusCode();
			if (status == HttpStatus.SC_OK) {
				StringBuffer sb = new StringBuffer();
				String line = null;

				while (null != (line = reader.readLine())) {
					sb.append(line);
				}

				File f = new File("f:/get.txt");
				if(!f.exists()) f.createNewFile();
				
				PrintWriter pw = new PrintWriter(f);
				pw.write(sb.toString());
				
				pw.close();
			}
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

프로그램 에서 생 성 된 파일 을 각각 열 어 보 니 첫 번 째 쓰기 형식 이 좋 고 가 독성 이 강하 다.두 번 째 는 비교적 복잡 하 다.이때 아직 반응 이 없다.설마 탭 문자 로 인 한 것 일 까?
정규 표현 식 찾 아 보기
*. 줄 바 꿈 을 제외 한 임의의 문자 와 일치 합 니 다.
위의 코드 를 보 니 줄 바 꾸 기 가 귀신 이 었 구나....................................................
The Commons HttpClient project is now end of life, and is no longer being developed. It has been replaced by the Apache HttpComponents project in its HttpClient and HttpCore modules, which offer better performance and more flexibility.

좋은 웹페이지 즐겨찾기