Post
KO

크롤링 2

응답헤더 관련

2xx 또는 3xx 처럼 일반적인 상태 코드를 응답했다면 처리를 진행한다.

404처럼 콘텐츠가 존재하지 않는 경우. 예외 목록에 추가하는 등의 처리가 필요하다.

그리고 다음회에 크롤링 하지 않는다.

5xx 등 서버 오류가 발생한 경우 처리를 중지한다.

302 redirect url에 관련한 이슈가 발생될 수 도 있다.

크롤링 매너

HTTP header 에 User-agent 값을 크롤러라는 것을 식별 할 수 있도록 설정하라.

-> 정보, 연락처

쿠키가 없으면 크롤링 할 수 없는 웹사이트

최초 요청시 Cookie의 JSESSIONID의 값을 추출하여 다음 요청에 활용하라.

크롤링 코드에 Proxy 서버 설정

Jsoup에 설정할 수 있고, System 속성으로도 설정이 가능하다.

// HTTP/HTTPS Proxy System.setProperty("http.proxyHost", getHTTPHost()); System.setProperty("http.proxyPort", getHTTPPort()); System.setProperty("https.proxyHost", getHTTPHost()); System.setProperty("https.proxyPort", getHTTPPort()); if (isUseHTTPAuth()) { String encoded = new String(Base64.encodeBase64((getHTTPUsername() + ":" + getHTTPPassword()).getBytes())); con.setRequestProperty("Proxy-Authorization", "Basic " + encoded); Authenticator.setDefault(new ProxyAuth(getHTTPUsername(), getHTTPPassword())); }

출처 :** **https://stackoverflow.com/questions/120797/how-do-i-set-the-proxy-to-be-used-by-the-jvm

SSL 관련 이슈 발생 될 수 있다

올바르지 않은 인증서 사용시 발생 될 수 있다.

Jsoup 옵션에서 해당 값을 무시하도록 설정할 수 있다.

정규화 새니타이즈

정규화

정규화란 시각적으로 다르게 작성된 문자 (예: ① 과 1) 하나의 문자로 통힐 하는 것

정규화를 제대로 해야 데이터를 쉽게 재사용할 수 있다,

새니타이즈

위험한 데이터를 위험하지 않게 변환하는 작업을 의미

일반적으로 정규화 이후 새니타이즈 하는 것이 정석이다.

ex) java.text.normalizer

문자열 추정 라이브러리

ICU4J

juniversalchardet

문자열 추정 라이브러리등이 있지만 완전히 정확하지는 않다.

This article is licensed under CC BY 4.0 by the author.