사이트 에서 뉴스 를 긁어내다.
먼저 홈 페이지 에 들 어간 다음 에 자신 이 '벗 기기' 하고 싶 은 정보 모듈, 예 를 들 어 뉴스, 경제, 오락 등 또는 다른 것 을 선택 하면 자신 이 필요 로 하 는 정 보 를 찾 은 다음 에 이 모듈 의 url 링크 주 소 를 읽 은 다음 에 읽 은 URL 주 소 를 옮 겨 다 니 며 정 보 를 읽 을 수 있 습 니 다.
현재 의 사 이 트 는 일반적으로 동적 으로 생 성 된다. 즉, 뉴스 정보 페이지 에 자신의 템 플 릿 이 있다 면 모든 정 보 는 특정한 DIV 나 용기 에 있 을 것 이다. 이 컨트롤 의 ID 를 찾 으 면 안의 데 이 터 를 얻 은 다음 에 안의 데 이 터 를 찾 을 수 있다.
아래 의 코드 는 제 가 특정한 사이트 의 정 보 를 테스트 한 것 입 니 다. 이미 정보 목록 을 읽 었 습 니 다. 먼저 올 려 서 여러분 께 참고 하도록 하 겠 습 니 다. 누군가의 악의 적 인 공격 을 방지 하기 위해 저 는 구체 적 인 링크 주 소 를 삭 제 했 습 니 다.
package hb.downweb;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
*
*/
public class Main {
//
private static final String http_url = " ";
// ID
private static final String summaryBlock = "id=\"blist\"";
// HTML
private static final String endSummaryBlock = "</table>";
//
public static List<String> list = new LinkedList<String>();
public static void main(String[] args) {
//
StringBuffer stringBuffer = new StringBuffer();
try {
// URL
URL url = new URL(http_url);
// , URLConnection ( URL )
URLConnection conn = url.openConnection();
int find_flag = 0; //
// ,
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while((line = reader.readLine()) != null){
//
if(line.indexOf(summaryBlock)!= -1){
find_flag = 1;//
}
//
if(line.indexOf(endSummaryBlock) != -1){
find_flag = 2;//
}
// stringBuffer
if(1 == find_flag){
stringBuffer.append(line);
}
//
if(2 == find_flag){
System.out.println("over");
find_flag = 0;
}
}
System.out.println(stringBuffer);
//
Pattern pattern = Pattern.compile("[0-9]{5}\\.htm");
Matcher matcher = pattern.matcher(stringBuffer);
System.out.println(matcher.find());
while(matcher.find()) {
// list
list.add(" " + matcher.group());
//
// System.out.println(matcher.group());
}
//
readNews(list);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
*
*/
public static void readNews(List<String> list){
String flagName = "news";
for(int i = 0; i < list.size(); i++){
//
String temp = list.get(i);
String filename = "";
filename = flagName + i+".txt";
//
getNewsContent(temp,filename);
}
}
/*
*
*/
public static void getNewsContent(String httpLink,String fileName){
try {
System.out.println("getNewsContent : " + httpLink);
// URL ,
URL url = new URL(httpLink);
URLConnection conn = url.openConnection();
// , ,
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
String tempStr;
// , ,
File file = new File(fileName);
FileOutputStream fos = new FileOutputStream(file);
String class_name = "class=\"content2";
String end_content = "</div>";
int readContentFlag = 0;
StringBuffer strbuf = new StringBuffer();
while((tempStr = reader.readLine()) != null){
if(tempStr.indexOf(class_name)!= -1){
readContentFlag = 1;
}
if(tempStr.indexOf(end_content)!= -1){
readContentFlag = 2;
}
if(1 == readContentFlag){
strbuf.append(tempStr);
// System.out.println(line);
}
if(2 == readContentFlag){
System.out.println("over");
readContentFlag = 0;
}
tempStr = strbuf.toString();
System.out.println("tempStr.indexOf(class_name)2: "+ tempStr.indexOf(class_name));
tempStr = delHTMLTag(tempStr);
tempStr = stripHtml(tempStr);
fos.write(tempStr.getBytes("utf-8"));
}
// ,
fos.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String delHTMLTag(String htmlStr){
String regEx_script="<script[^>]*?>[\\s\\S]*?<\\/script>"; // script
String regEx_style="<style[^>]*?>[\\s\\S]*?<\\/style>"; // style
String regEx_html="<[^>]+>"; // HTML
Pattern p_script=Pattern.compile(regEx_script,Pattern.CASE_INSENSITIVE);
Matcher m_script=p_script.matcher(htmlStr);
htmlStr=m_script.replaceAll(""); // script
Pattern p_style=Pattern.compile(regEx_style,Pattern.CASE_INSENSITIVE);
Matcher m_style=p_style.matcher(htmlStr);
htmlStr=m_style.replaceAll(""); // style
Pattern p_html=Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE);
Matcher m_html=p_html.matcher(htmlStr);
htmlStr=m_html.replaceAll(""); // html
return htmlStr.trim(); //
}
public static String stripHtml(String content) {
// <p>
content = content.replaceAll("<p .*?>", "\r
");
// <br><br/>
content = content.replaceAll("<br\\s*/?>", "\r
");
// <>
content = content.replaceAll("\\<.*?>", "");
// HTML
// content = HTMLDecoder.decode(content);
content = content.replaceAll(" ", "");
return content;
}
}
비고: 위의 운행 은 동기 화 된 것 입 니 다. 사용자 체험 을 향상 시 키 기 위해 위의 방식 을 '스 레 드' 로 바 꿀 수 있 습 니 다. 그러면 체험 이 많이 좋아 질 것 입 니 다. 독자 들 이 쉽게 이해 할 수 있 도록 여 기 는 더 이상 군말 하지 않 겠 습 니 다.
나의 이런 방법 은 통용 되 는 것 이 아니 지만 참고 로 삼 을 수 있 으 니, 여러분 들 이 많은 의견 을 제시 하 시기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.