在java中设置爬虫的Accept-Language头



我想找到正确的方法来设置接受语言头为我的爬虫?我读了其他相关的答案,比如以特定语言获取imdb电影标题,以及如何根据applet的请求设置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");

请帮帮我,我真的是java新手。

谢谢

在JSoup中,您使用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"代替最后一个注释。

Accept- language请求头字段类似于Accept,但是限制了作为请求响应的首选自然语言集。这里的语言标签

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

每个语言范围都可以被赋予一个相关的质量值,该值表示用户对该范围指定的语言的偏好的估计。质量值默认为"q=1"。例如,

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

的意思是:"我更喜欢丹麦语,但会接受英式英语和其他类型的英语。"如果语言范围完全等于语言标记,或者如果它完全等于标记的前缀,使得前缀后面的第一个标记字符是"-",则语言范围匹配语言标记。如果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.

Accept-Language字段分配给语言标签的语言质量因子是该字段中与语言标签匹配的最长语言范围的质量值。如果字段中没有与标签匹配的语言范围,则分配的语言质量因子为0。如果请求中没有Accept-Language标头,服务器

应该假定所有语言都是同样可接受的。如果出现Accept-Language标头,则所有被分配质量因子大于0的语言都是可接受的。

在每个请求中发送包含用户完整语言偏好的Accept-Language头可能与用户的隐私期望相反。

由于可理解性高度依赖于个人用户,因此建议客户端应用程序为用户提供语言偏好选择。如果选择不可用,那么Accept-Language头字段绝对不能在请求中给出。

注意:当选择语言偏好时,可以用户,我们提醒实现者,用户不是熟悉上述语言匹配的细节;并应提供适当的指导。例如,用户可以假设在选择"en-gb"时,它们将被提供任何如果不能用英式英语,那就用一种英语文件。一个在这种情况下,用户代理可能会建议添加"en"来获取最佳匹配行为。

的例子:

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

希望有帮助!

来源:

    http://www.java-samples.com/java/POST-toHTTPS-url-free-java-sample-program.htm
  • http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html sec3.10

最新更新