使用 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”。此更改对我有用!
我正在尝试使用 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.
中提供的有关执行此操作的 linkNad Pat 似乎几乎答对了,但应该是“Accept-Language”而不是“accept_language”。此更改对我有用!