Before 2022/Java & Spring
Jsoup를 활용한 게티이미지 썸네일 크롤링
Eljoe
2019. 4. 3. 15:23
해당 사이트의 썸네일 이미지를 크롤링하여 파일로 저장하는 방법을 적어두려한다.
구조를 파악하기 위해 일단 F12를 클릭한다.
구조를 파악해보자면, 썸네일 이미지들을 클래스 이름이 search-results인 section 태그가 감싸는 형태이며
각각의 썸네일 이미지 태그는 img src="...." 형식으로 되어있는 것을 볼 수 있다.
소스는 아래와 같다.
import org.jsoup.Jsoup import org.jsoup.select.Elements import java.io.File import java.net.URL import javax.imageio.ImageIO private const val GETTY_URL: String = "https://www.gettyimages.co.jp/%E5%86%99%E7%9C%9F" + "/collaboration?mediatype=photography&phrase=collaboration&sort=mostpopular" fun imgAccessFromURL(URL: String, query: String = "img"): Elements = Jsoup.connect(URL) .userAgent("Mozilla") .get() .select(query) // 확장함수 fun Elements.saveImage(dir: String = """c:\img\""", extension: String = "jpg") { if (this.isNotEmpty()) { if (!File(dir).exists()) File(dir).mkdirs() for ((index, element) in this.withIndex()) { val imageAttr = URL(element.attr("src")) val bufferedImage = ImageIO.read(imageAttr) ImageIO.write(bufferedImage, extension, File("$dir$index.$extension")) println("$dir$index.$extension is Saved!") Thread.sleep(1000) } } else { println(" tag is not found!") } } fun main() { imgAccessFromURL(GETTY_URL, ".search-results img[src]").saveImage() }
결과화면