2014-05-23 10 views
1

크롤러의 Accept-Language 헤더를 설정하는 올바른 방법을 찾고 싶습니다. 내가 Getting imdb movie titles in a specific languageHow to set Accept-Language header on request from applet 같은 기타 관련 답변을 읽을 수는 있지만 그들은 내가이 오류가 (나를 위해 작동하지 않았다Java의 크롤러에 대한 Accept-Language 헤더를 설정하십시오.

String baseUrl = "http://www.imdb.com/search/title?at=0&count=250"; 

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"); 

것은 제발 도와주세요 : "방법은 유형 연결에 대한 정의는"여기에 코드의 일부입니다 나는 자바에 정말 새로운입니다.

감사

+0

여전히 imDB 작업을하고 있습니까? :) –

+0

:))))))) 아니요, 3 달 전에 프로젝트를 마쳤습니다. 오늘 우연히 발견했습니다. – mOna

답변

1

, 당신은 요청 헤더를 설정 header 방법을 사용합니다. 따라서 코드의 마지막 줄이됩니다. 가독성을 위해 줄 바꿈을 추가했습니다.

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", /* Put your language here */); 

예를 들어, 영어를 수락, 당신은 마지막 코멘트 대신에 "en"을 쓸 것입니다.

+0

덕분에 많은 도움이되었습니다. :) – mOna

+0

@monamona와 행운을 빕니다. –

1

승인] - 언어 요청 헤더 필드는 Accept와 유사하지만 요구에 대한 응답으로 자연 언어의 집합을 제한합니다. Language Tags here

Accept-Language = "Accept-Language" ":" 
        1#(language-range [ ";" "q" "=" qvalue ]) 
    language-range = ((1*8ALPHA *("-" 1*8ALPHA)) | "*") 

각 언어 범위는 해당 범위로 지정된 언어에 대한 사용자의 기본 설정 추정치를 나타내는 관련 품질 값을 제공 할 수 있습니다 (MAY). 품질 값의 기본값은 "q = 1"입니다. 예를 들어,

Accept-Language: da, en-gb;q=0.8, en;q=0.7 

은 "나는 덴마크어를 선호하지만 영국식 영어와 다른 유형의 영어를 사용할 수 있습니다."라고 표시합니다. language-range는 언어 태그가 태그와 정확하게 일치하거나 접두어 다음의 첫 번째 태그 문자가 "-"인 태그의 접두어와 정확히 일치하는 경우 언어 태그와 일치합니다. Accept-Language 필드에있는 특수 범위 "*"는 Accept-Language 필드에있는 다른 범위와 일치하지 않는 모든 태그와 일치합니다. Accept-Language 필드의 언어 태그에 할당

Note: This use of a prefix matching rule does not imply that 
    language tags are assigned to languages in such a way that it is 
    always true that if a user understands a language with a certain 
    tag, then this user will also understand all languages with tags 
    for which this tag is a prefix. The prefix rule simply allows the 
    use of prefix tags if this is the case. 

언어 품질 요소는 language-tag와 일치하는 필드의 가장 긴 language-range 품질 값이다. 필드에 언어 범위가 일치하지 않으면 할당 된 언어 품질 요소는 0입니다. 요청에 Accept-Language 헤더가 없으면 서버

은 모든 언어가 동등하게 수용되어야한다고 가정해야합니다. Accept-Language 헤더가 있으면 0보다 큰 품질 요소가 할당 된 모든 언어를 사용할 수 있습니다.

모든 요청에서 사용자의 완전한 언어 환경 설정으로 Accept-Language 헤더를 보내는 것이 사용자의 개인 정보 보호 기대에 반하는 것일 수 있습니다.

명료도는 개별 사용자에 따라 크게 다르므로 클라이언트 응용 프로그램에서 사용자가 사용할 수있는 언어 기본 설정을 선택하는 것이 좋습니다. 선택 사항을 사용할 수 없으면 요청에 Accept-Language 헤더 필드를 제공하면 안됩니다 (MUST NOT).

Note: When making the choice of linguistic preference available to the user, we remind implementors of the fact that users are not familiar with the details of language matching as described above, and should provide appropriate guidance. As an example, users might assume that on selecting "en-gb", they will be served any kind of English document if British English is not available. A user agent might suggest in such a case to add "en" to get the best matching behavior.

예 : 도움이

connection.setRequestProperty("Accept-Language","<!-- Depends on Language you want -->"); 

희망!

출처 : JSoup에서