>  기사  >  Java  >  Java를 처음부터 작성하고 크롤링된 콘텐츠를 로컬에 저장합니다. (2)

Java를 처음부터 작성하고 크롤링된 콘텐츠를 로컬에 저장합니다. (2)

黄舟
黄舟원래의
2016-12-24 11:50:451694검색

이후 사용을 위해 이 두 함수를 FileReaderWriter.java 파일에 캡슐화합니다.
그런 다음 Zhihu 크롤러로 돌아갑니다.
로컬에 쓸 때 조판 형식을 지정하려면 Zhihu의 Zhihu 캡슐화 클래스에 함수를 추가해야 합니다.

코드는 다음과 같습니다.

public String writeString() {  
        String result = "";  
        result += "问题:" + question + "\r\n";  
        result += "描述:" + questionDescription + "\r\n";  
        result += "链接:" + zhihuUrl + "\r\n";  
        for (int i = 0; i < answers.size(); i++) {  
            result += "回答" + i + ":" + answers.get(i) + "\r\n";  
        }  
        result += "\r\n\r\n";  
        return result;  
}

그렇습니다. 다음으로 main 메소드의 System.out.println을

코드로 변경합니다.

// 写入本地  
        for (Zhihu zhihu : myZhihu) {  
            FileReaderWriter.writeIntoFile(zhihu.writeString(),  
                    "D:/知乎_编辑推荐.txt", true);  
        }

실행하면 원래 콘솔에 표시된 내용이 로컬 txt 파일에 기록된 것을 확인할 수 있습니다.

Java를 처음부터 작성하고 크롤링된 콘텐츠를 로컬에 저장합니다. (2)

일반적으로 언뜻 보면 문제가 없습니다. 자세히 살펴보면 문제가 있습니다. 주로
등의 HTML 태그가 너무 많습니다.
출력 중에 이러한 태그를 처리할 수 있습니다.
먼저 io 스트림에서
를 rn으로 바꾼 다음 모든 html 태그를 삭제하면 훨씬 더 명확해집니다.

코드는 다음과 같습니다.

public String writeString() {  
    // 拼接写入本地的字符串  
    String result = "";  
    result += "问题:" + question + "\r\n";  
    result += "描述:" + questionDescription + "\r\n";  
    result += "链接:" + zhihuUrl + "\r\n";  
    for (int i = 0; i < answers.size(); i++) {  
        result += "回答" + i + ":" + answers.get(i) + "\r\n\r\n";  
    }  
    result += "\r\n\r\n\r\n\r\n";  
    // 将其中的html标签进行筛选  
    result = result.replaceAll("<br>", "\r\n");  
    result = result.replaceAll("<.*?>", "");  
    return result;  
}

여기서 replacementAll 함수는 정규 표현식을 사용할 수 있으므로 마지막에 모든 태그가 삭제됩니다.

위 내용은 캡처한 내용을 로컬에 저장하기 위해 기초 없이 Java Zhihu 크롤러를 작성하는 내용입니다(2). 더 많은 관련 내용은 PHP 중국어 홈페이지(www.kr)를 참고해주세요. .php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.