[java] Jsoup을 사용하여 웹페이지 응답 속도 제한하기

웹 스크래핑을 위해 Jsoup을 사용하는 경우, 때로는 웹페이지의 응답 속도를 제한해야 할 수도 있습니다. 이는 서버 부하를 줄이고 스크래핑을 안정적으로 수행하기 위해 중요한 요소입니다. 이 글에서는 Jsoup을 사용하여 웹페이지 응답 속도를 제한하는 방법을 알아보겠습니다.

1. 연결 타임아웃 설정하기

Jsoup은 기본적으로 타임아웃 설정이 되어 있지 않기 때문에, 응답이 오래 걸릴 경우 스크래핑이 멈출 수 있습니다. 이를 방지하기 위해 timeout 메서드로 연결 타임아웃을 설정할 수 있습니다.

Document doc = Jsoup.connect("http://example.com")
                .timeout(5000) // 5초를 타임아웃으로 설정
                .get();

위의 예제에서는 timeout(5000)으로 5초를 타임아웃으로 설정했습니다.

2. 읽기 타임아웃 설정하기

웹페이지의 응답이 길어서 읽기 시간이 오래 걸릴 경우, Jsoup은 기본적으로 읽기 타임아웃을 설정하지 않습니다. 읽기 타임아웃은 서버가 응답을 보내기까지의 허용 시간을 의미하며, 이를 설정하지 않을 경우 스크래핑이 멈출 수 있습니다.

읽기 타임아웃은 timeout 메서드로 설정 가능합니다.

Document doc = Jsoup.connect("http://example.com")
                .timeout(5000) // 읽기 타임아웃을 5초로 설정
                .get();

위 예제에서도 timeout(5000)으로 5초를 타임아웃으로 설정했습니다.

3. Connection 설정 변경하기

Jsoup은 연결 객체인 Connection을 통해 응답 속도와 관련된 정책을 변경할 수 있는 다양한 설정을 제공합니다. 예를 들어, maxBodySize 메서드를 사용하여 읽을 수 있는 최대 바이트 수를 설정할 수 있습니다. 이를 통해 큰 파일을 스크래핑할 때 스트림 크기를 제한할 수 있습니다.

Document doc = Jsoup.connect("http://example.com")
                .maxBodySize(1024 * 1024) // 1MB로 제한
                .get();

위의 예제에서는 maxBodySize(1024 * 1024)으로 1MB로 제한했습니다.

4. 스레드 수 제한하기

Jsoup은 기본적으로 다수의 스레드를 사용하여 컨텐츠를 받아옵니다. 하지만 이는 서버에 부하를 줄 수 있으므로, 필요에 따라 스레드 수를 제한할 수 있습니다. maxBodySize 메서드를 사용하여 최대 스레드 수를 설정할 수 있습니다.

Connection connection = Jsoup.connect("http://example.com");
connection.maxBodySize(1024 * 1024); // 1MB로 제한

Document doc = connection.get();

위의 예제에서는 maxBodySize 메서드를 사용하여 최대 스레드 수를 1로 제한했습니다.

마무리

이렇게 Jsoup을 사용하여 웹페이지 응답 속도를 제한할 수 있습니다. 서버 부하를 줄이고 스크래핑을 안정적으로 수행하기 위해 응답 속도를 제한하는 것은 중요한 요소입니다. 위의 방법들을 참고하여 적절하게 응답 속도를 제한해보세요.


참고 자료: