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

使用R语言rvest提交表单时遭遇enc2utf8(url)错误求助

解决rvest提交表单时enc2utf8(url)报错问题

我来帮你分析并解决这个用rvest抓取VNDirect交易数据时遇到的报错问题。

问题根源

你遇到的Error in enc2utf8(url) : argument is not a character vector报错,核心原因是你选中的第一个表单没有有效的action属性——简单说就是rvest不知道该把填好的表单数据提交到哪个URL。而另一个页面lich-su-gia.shtml的表单在源码里有明确的提交地址,所以能正常工作。

你可以先验证这一点,运行下面的代码查看表单的action值:

url <- "https://www.vndirect.com.vn/portal/thong-ke-thi-truong-chung-khoan/ket-qua-giao-dich.shtml"
page_session <- html_session(url)
pgform <- html_form(page_session)[[1]]
# 查看表单的提交地址
pgform$action

大概率会返回NULL,这就坐实了问题所在。

两种可行的解决方案

方案1:手动给表单指定提交URL

通过浏览器的开发者工具(F12打开Network标签),可以抓到这个表单实际提交的API地址。对于这个交易统计页面,提交地址通常是https://www.vndirect.com.vn/portal/thong-ke-thi-truong-chung-khoan/ket-qua-giao-dich.ajax。你只需要手动给表单添加这个地址即可:

library(rvest)

url <- "https://www.vndirect.com.vn/portal/thong-ke-thi-truong-chung-khoan/ket-qua-giao-dich.shtml"
page_session <- html_session(url)
pgform <- html_form(page_session)[[1]]

# 手动设置表单的提交URL
pgform$action <- "https://www.vndirect.com.vn/portal/thong-ke-thi-truong-chung-khoan/ket-qua-giao-dich.ajax"

# 填充表单数据
filled_form <- set_values(form = pgform, 
                          searchMarketStatisticsView.market = "HOSE", 
                          strTradingDate = "06/08/2020")

# 提交表单并获取结果
result <- submit_form(page_session, filled_form)

方案2:直接发送POST请求(更稳定)

既然已经知道了表单参数和提交地址,也可以跳过rvest的表单解析步骤,直接用httr包发送POST请求,这种方式更不容易受页面结构变化影响:

library(httr)

# 表单提交的API地址
post_url <- "https://www.vndirect.com.vn/portal/thong-ke-thi-truong-chung-khoan/ket-qua-giao-dich.ajax"

# 发送POST请求,携带表单参数
response <- POST(post_url, 
                 body = list(
                   searchMarketStatisticsView.market = "HOSE",
                   strTradingDate = "06/08/2020"
                 ),
                 encode = "form")

# 解析返回的HTML内容
result_html <- content(response, "html")

为什么另一个页面能正常工作?

lich-su-gia.shtml的表单在页面源码中自带了明确的action属性,rvest可以自动识别这个地址并完成提交,所以不会出现URL相关的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:22:39