Web Scraping with Scala-#1
Updated:Categories: Scala
Tags: #Scala #Web crawler
Requirement
파이썬으로 웹 크롤러 만들기(Web Scraping with Python) 에서 파이썬 기본 라이브러리로만 웹 데이터를 string으로 받아오는 것에 대응하는 스칼라 스크립트 만들어보기
Approach
- 스칼라로 URL 접근방법
에서 제시한 방법대로 진행하였을 때, google.com에서 아래와 같은 에러 발생
[error] (run-main-0) java.nio.charset.MalformedInputException: Input length = 1 java.nio.charset.MalformedInputException: Input length = 1 ...
-
Using result from Scalas “fromURL” throws Exception 에서 encode/decode 문제라는 것을 파악. google.com과 naver.com을 테스트. google.com은 “ISO-8859-1”로 설정할 경우, 글씨가 깨져서 나오지 않음. 하지만 naver.com은 글씨가 깨져서 나옴 웹사이트들은 제각각의 양식으로 만들어서 올리기 때문에 자동으로 판별해서 적용할 수 있으면 좋겠다는 생각을 함.
- mixed encodings in Scala or Java 에서 다양한 encoding 경우에도 적용할 수 있는 방법을 찾음
Result
- 스칼라 스크립트 getStringFromURL.scala 에 아래 내용 저장
import scala.io.Source
import java.nio.charset.CodingErrorAction
import scala.io.Codec
implicit val codec = Codec("UTF-8")
codec.onMalformedInput(CodingErrorAction.IGNORE)
codec.onUnmappableCharacter(CodingErrorAction.REPLACE)
val url = "http://www.naver.com" //"http://google.com"
val html = Source.fromURL(url)
val s = html.getLines.mkString("\n")
println(s)
- 스크립트 실행
$ cd {path/folder}
$ scala getStringFromURL.scala
Comments