You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用rvest的read_html()获取pixiv英文页面返回日文版,求解决方案

解决rvest读取Pixiv英文站却返回日文页面的问题

问题说明

使用rvest的read_html()读取Pixiv英文站时,返回的HTML代码里<html>标签的lang属性为ja(日文版本),但实际需要获取lang="en"的英文页面。曾尝试参考xml2文档设置User Agent,但不清楚具体实现方式,也不确定是否找对了解决方向。

解决方法

Pixiv会根据请求头中的Accept-Language(语言偏好)和User-Agent(客户端标识)来决定返回的页面语言版本,因此需要在请求中添加这两个关键头信息,具体实现有两种方式:

方式一:结合httr::GET()发送请求

先通过httr::GET()自定义请求头发送请求,再将响应传给read_html()解析:

library(rvest)
library(httr)

# 定义请求头:设置英文优先,同时模拟主流浏览器标识
custom_headers <- add_headers(
  `Accept-Language` = "en-US,en;q=0.9",
  `User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
)

# 发送请求并解析HTML
response <- GET("https://www.pixiv.net/en/", custom_headers)
target_html <- read_html(response)

# 验证是否获取到英文页面
html_node(target_html, "html") %>% html_attr("lang")

方式二:直接在read_html()中传递配置

更简洁的写法是直接在read_html()的config参数中添加请求头:

library(rvest)

# 直接配置请求头并读取页面
target_html <- read_html(
  "https://www.pixiv.net/en/",
  config = httr::add_headers(
    `Accept-Language` = "en-US,en;q=0.9",
    `User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
  )
)

# 验证语言属性
html_node(target_html, "html") %>% html_attr("lang")

关键说明

  • Accept-Language设置为en-US,en;q=0.9,明确告诉服务器优先返回英文版本
  • User-Agent模拟普通浏览器,避免被服务器识别为爬虫而返回默认的日文页面

内容的提问来源于stack exchange,提问作者kyarudata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:35:23