2012-01-27 3 views
1

page title, descriptionkeywords을 자바에서 가져오고 싶습니다.자바에서 트위터 페이지 제목, 설명 및 키워드를

나는 이것에 대해 여러 번 고글을 쓰지만 해결책을 찾지 못했습니다. 모든 사람들이 ISO-8859 문자 세트 형식으로 응답 해주었습니다. UTF-8 문자 세트 형식으로 응답 해주십시오.

public class TitDesKey 
{ 
     public static void main (String[] args) throws IOException 
     { 
      String inputLine,source= null,result_tit= null,result_des= null,result_key= null; 
       try 
       { 
         URL url = new URL("http://www.twitter.com"); 

         URLConnection conn = url.openConnection(); 
         conn.setRequestProperty("User-Agent","Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1.6) Gecko/20070723 Iceweasel/2.0.0.6 (Debian-2.0.0.6-0etch1)"); 
         BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));       


         while ((inputLine = in.readLine()) != null) 
         { 
          source=source+" "+inputLine; 
          if(inputLine.contains("</head>")) 
          { 
           break; 
          } 
         } 
       } 
       catch (MalformedURLException e) 
       { 
        System.out.println("Please Enter Write Information"); 
       } 
       catch (IOException e) 
       { 
        System.out.println("Please Enter Write Information"); 
       } 


//    Title Data 
       Pattern PATTERN_tit = Pattern.compile("<title>(.*?)</title>", Pattern.CASE_INSENSITIVE|Pattern.DOTALL); 

       Matcher m_tit = PATTERN_tit.matcher(source); 
       while (m_tit.find()) 
       { 
        result_tit = m_tit.group(1); 
        result_tit = result_tit.replace("/", "").trim(); 
        System.out.println(result_tit); 
       }  

//    Description Data 
       Pattern Pattern_dis = Pattern.compile("<meta name=\"description\" content=(.*?)>", Pattern.CASE_INSENSITIVE|Pattern.DOTALL); 

       Matcher m_dis = Pattern_dis.matcher(source); 
       while (m_dis.find()) 
       { 
        result_des = m_dis.group(1); 
        result_des = result_des.replace("/", "").trim(); 
        System.out.println(result_des); 
       } 

//    Keyword Data 
       Pattern Pattern_key = Pattern.compile("<meta name=\"keywords\" content=(.*?)>",Pattern.CASE_INSENSITIVE|Pattern.DOTALL); 

       Matcher m_key = Pattern_key.matcher(source); 
       while (m_key.find()) 
       { 
        result_key = m_key.group(1); 
        result_key = result_key.replace("/", "").trim(); 
        System.out.println(result_key); 
       } 
     } 
} 

나는 이것에 대한 코드 아래 사용

는, 사전에 감사합니다.

+1

응답 문자셋 (이 경우 라틴어 1)을 사용하고 나면 UTF-8로 변환해야합니다. –

+0

요청 속성 "Accept-Charset : utf-8"을 설정하려고 시도 했습니까? – korifey

+0

이 BufferedReader를 = 새로운 BufferedReader에서 사용했습니다 (새로운 InputStreamReader (conn.getInputStream(), "utf-8")); –

답변

1

가져 오는 페이지가 이미 UTF-8 인 경우 오버로드 된 InputStreamReader 생성자를 사용하여 문자 집합도 허용합니다. UTF-8을 사용하면 괜찮을 것입니다.

Documentation reference.

+0

트위터에서 얻는 형식은 ISO-8859이며 UTF-8로 변환 중입니다. "새로운 InputStreamReader (conn.getInputStream(),"UTF-8 ")" –

+0

UTf-8이 출력은 "???????"입니다. –