【问题标题】:Choose the language of text results when scraping with rvest (IMDB example)使用 rvest 抓取时选择文本结果的语言(IMDB 示例)
【发布时间】:2022-01-11 13:57:20
【问题描述】:

我正在尝试使用 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 友好的管道链中?

【问题讨论】:

    标签: r tidyverse rvest imdb


    【解决方案1】:

    试试,

        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
    

    【讨论】:

    • 感谢您的回答!不幸的是,它对我不起作用,尽管我知道为什么它应该这样做。我仍然得到相同的结果 - 我能找到的唯一解决方案是使用 VPN。
    • 正如 WHardy 指出的那样,如果您将“accept_language”切换为“Accept-Language”,则此方法有效。
    • 根据 WHardy 修改了答案
    【解决方案2】:

    刚刚有一个类似的问题需要解决(但使用的是波兰语)。我查看了 Nad Pat 的建议以及您提供的关于在 PHP 中执行此操作的链接。

    看起来 Nad Pat 几乎是正确的,但它应该是“Accept-Language”而不是“accept_language”。这个改变对我有用!

    【讨论】:

    • 对我来说也是如此!感谢您制定修正案!
    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 2017-06-26
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2017-03-22
    相关资源
    最近更新 更多