使用rvest爬取IMDB时如何指定返回文本语言(以IMDB Top250为例)
IMDB rvest抓取指定返回英文内容解决方案
问题原因
IMDB 优先通过 HTTP 请求头的Accept-Language字段判定返回内容的语言,字段缺失时才会按照IP所属地的默认语言返回内容。你本地浏览器默认携带了英文语言请求头所以访问时显示英文,rvest默认发送的请求未携带相关字段,因此日本IP会返回日文罗马音标题。
兼容管道链的解决方案
借助httr包构造携带指定语言头的请求即可,无需修改后续的解析逻辑,完全适配tidyverse管道写法:
library(rvest) library(tidyverse) library(httr) url <- "https://www.imdb.com/chart/top/?ref_=nv_mv_250" GET(url, add_headers(`Accept-Language` = "en-US,en;q=0.9")) %>% read_html() %>% html_nodes(".titleColumn a") %>% html_text() %>% tibble(title = .) %>% head()
如果需要调整语言偏好,修改Accept-Language对应值即可,比如要获取简体中文内容可以改为zh-CN,zh;q=0.9,en;q=0.8。
内容的提问来源于stack exchange,提问作者awaji98
相关产品推荐
相关产品推荐

