使用 rvest 抓取时选择文本结果的语言(IMDB 示例)

Choose the language of text results when scraping with rvest (IMDB example)

我正在尝试使用 rvest 对 IMDB 进行一些网络抓取,但我经常遇到语言输出问题,这可能是由于我位于日本。

例如,当尝试从此页面抓取电影片名时:

https://www.imdb.com/chart/top/?ref_=nv_mv_250

使用以下代码:

library(rvest)
library(tidyverse)    
url <- "https://www.imdb.com/chart/top/?ref_=nv_mv_250"

read_html(url) %>% 
    html_nodes(".titleColumn a") %>% 
    html_text() %>% 
    tibble(title = .) %>% 
    head()

结果是罗马化电影的英文和日文标题的混合:

  title                 
  <chr>                 
1 Shôshanku no sora ni  
2 Goddofâzâ             
3 The Godfather: Part II
4 Dâku naito            
5 12 Angry Men          
6 Schindler's List 

即使我屏幕上的文本,甚至当我使用 Chrome 的开发人员工具检查元素时,都是英文的,情况也是如此。

我想这个问题类似于 SO here 上发布的关于使用 PHP 进行抓取的问题。

有没有办法请求英文输出,最好是在 tidyverse 友好的管道链中?

试试,

    library(rvest)
    library(tidyverse) 
    library(httr) 

    GET(url = 'https://www.imdb.com/chart/top/?ref_=nv_mv_250'
                  , add_headers(.headers = c('user_agent'= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
                                        , 'Accept_language' = 'en-US,en;q=0.9'))) %>% 
          read_html() %>% 
          html_nodes(".titleColumn a") %>% 
          html_text() %>% 
          tibble(title = .) %>% 
          head()
    # A tibble: 6 x 1
      title                   
      <chr>                   
    1 The Shawshank Redemption
    2 The Godfather           
    3 The Godfather: Part II  
    4 The Dark Knight         
    5 12 Angry Men            
    6 Schindler's List

刚刚有一个类似的问题需要解决(但使用波兰语)。我查看了 Nad Pat 的建议以及您在 PHP.

中提供的有关执行此操作的 link

Nad Pat 似乎几乎答对了,但应该是“Accept-Language”而不是“accept_language”。此更改对我有用!