코드 사본은 다음과 같습니다.
패키지 작업;
import java.io.bufferedReader;
import java.io.ioexception;
import java.io.inputstream;
import java.io.inputStreamReader;
import java.util.regex.matcher;
java.util.regex.pattern import;
import org.apache.commons.httpclient.defaulthtpmethodretryhandler;
import org.apache.commons.httpclient.httpclient;
import org.apache.commons.httpclient.httpexception;
import org.apache.commons.httpclient.httpstatus;
import org.apache.commons.httpclient.methods.getMethod;
import org.apache.commons.httpclient.params.httpmethodparams;
공개 클래스 chuanboyi {
public static void main (String [] args) {
// TODO 자동 생성 메소드 스텁
StringBuffer html = new StringBuffer ();
httpclient httppclient = new httpclient ();
// get 메소드 인스턴스를 만듭니다
getMethod getMethod = new getMethod ( "// www.vevb.com");
// 시스템에서 제공 한 기본 복구 정책을 사용하십시오
getMethod.getParams (). setParameter (httpmethodparams.retry_handler, 새로운 defaulthttpmethodretryhandler ());
노력하다{
// get 메소드를 실행합니다
int statusCode = httpclient.executemethod (getMethod);
if (statusCode! = httpstatus.sc_ok) {
System.out.println ( "메소드가 잘못되었습니다" + getMethod.getStatusline ());
}
inputStream responsebody = getMethod.getResponseBodyAsStream ();
bufferedReader reader = new bufferedReader (new inputStreamReader (응답 바디, "UTF-8"));
String line = reader.readline ();
while (line! = null) {
html.append (line) .append ( "/n");
line = reader.readline ();
}
reader.close ();
// 정규 표현
String regex = "<form name =/"compralform/"[// s // s]+> [// s // s]+</form>.*<script.*>";
String regexa = "(? <= <li>) [// s // s]+? (? = </li>)";
Pattern Pattern = Pattern.compile (Regex);
매치 자 m = pattern.matcher (html);
StringBuffer str = new StringBuffer ();
int i = 0;
while (m.find ()) {
str.append (m.group ());
}
pattern = pattern.compile (regexa);
m = pattern.matcher (str);
while (m.find ()) {
attrs (m.group ());
i ++;
}
System.out.println ( "총계"+i+"data!");
} catch (httpexception e) {
// TODO : 예외를 처리합니다
System.out.println ( "제공된 HTTP 주소를 확인하십시오!");
e.printstacktrace ();
} catch (ioexception e) {
// TODO : 예외를 처리합니다
System.out.println ( "선이 잘못되었습니다!");
e.printstacktrace ();
} 마지막으로{
getMethod.releaseConnection (); // 링크를 릴리스합니다
}
}
공개 정적 무효 atts (String str) {
// URL의 regex를 얻습니다
문자열 regexurl = "[az]+-[0-9]+//. html";
// 정규 표현식을 얻습니다
String regexname = "(? <= title =/") [[// w-// s] [^x00-xff]]+(? =/")";
// 이미지의 정규 표현식을 가져옵니다
문자열 regexpicture = "images.*//. jpg";
Pattern PatternUrl = Pattern.compile (regexurl);
PatternName = Pattern.comPile (regexName);
Pattern PatternPicture = Pattern.comPile (RegexPicture);
매치 자 murl = patternurl.matcher (str);
MATHER MNAME = PatternName.matcher (str);
매치 자 mpicture = PatternPicture.matcher (str);
if (mname.find ()) {
System.out.println ( "이름 :"+mname.group ());
}
if (murl.find ()) {
System.out.println ( "링크 :"+murl.group ());
}
if (mpicture.find ()) {
System.out.println ( "사진 :"+mpicture.group ());
}
}
}