영화 목록을 크롤링하여 데이터베이스에 저장했습니다. 영어 문자 만 들어있는 영화에서는 모두 잘 작동하지만 영어가 아닌 문자가 포함 된 영화 이름 중 일부는 올바르게 표시되지 않는 것이 문제입니다. 예를 들어 이탈리아 영화 "Il più cruel dei giorni"는 "Il pi & ugrave; crude dei giorni"로 저장됩니다.자바 웹 크롤러가 영어 이외의 문자를 인식 할 수 없습니다.
누군가 해결책이있을 경우 친절하게 알려주실 수 있습니까? (나는 크롤러의 언어를 설정할 수 있음을 알고 있지만 이미 이탈리아어로 영화 제목을 크롤링했으나 영문 제목을 크롤링하려고 할 때 Imdb에 영어 이외의 문자가있는 영화가 아직 남아 있습니다)
편집 : 여기 내 코드입니다 :
String baseUrl = "http://www.imdb.com/search/title?at=0&count=250&sort=num_votes,desc&start="+start+"&title_type=feature&view=simple";
label1: try {
org.jsoup.Connection con = Jsoup.connect(baseUrl).userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21").header("Accept-Language", "en");
con.timeout(30000).ignoreHttpErrors(true).followRedirects(true);
Response resp = con.execute();
Document doc = null;
if (resp.statusCode() == 200) {
doc = con.get();
Elements myElements = doc.getElementsByClass("results").first().getElementsByTag("table");
Elements trs = myElements.select(":not(thead) tr");
for (int i = 0; i < trs.size(); i++) {
Element tr = trs.get(i);
Elements tds = tr.select("td");
for (int j = 3; j < tds.size(); j++) {
Elements links = tds.select("a[href]");
String titleId = links.attr("href");
String movietitle = links.html();
//I ADDED YOUR CODE HERE
Charset c = Charset.forName("UTF-16BE");
ByteBuffer b = c.encode(movietitle);
for (int m = 0; b.hasRemaining(); m++) {
int charValue = (b.get()) & 0xff;
System.out.print((char) charValue);
}
// try{
// String query = "INSERT into test (movieName,ImdbId)" + "VALUES (?,?)";
// PreparedStatement preparedStmt = conn.prepareStatement(query);
// preparedStmt.setString (1, movietitle);
// preparedStmt.setString (2, titleId);
// }catch (Exception e)
// {
// e.printStackTrace();
// }
감사합니다, 여기에
http://www.joelonsoftware.com/articles/Unicode.html – Tirath
@Tirath : 유용한 자료를 보내 주셔서 감사합니다. 사실, 나는 Movietitle을 얻었고 DB에 저장했다. 문자열 "movietitle"에 영화 이름을 저장 한 후 인코딩 줄을 추가해야합니까?. 원래 코드를 보려면 내 업데이트를 보시겠습니까? – mOna
@Tirath : 그 인코딩 라인을 추가하는 것조차도 여전히 같은 출력을 얻습니다 :(내가 혼란 스러울 때 도움이 될 수 있겠습니까? – mOna