我想使用R
提取网页上"信息"下列出的links
。数据是公开的,不禁止抓取。
With an empty search on https://fsca.swissmedic.ch/mep/#/ and >export results I get a CSV. However, this CSV does not include what I need (links under "Information"). I thought that I could use this CSV (with unique identifiers, e.g., Vk_20220224_16
) to programmatically open the pages separately (e.g., https://fsca.swissmedic.ch/mep/#/?q=Vk_20220224_16) and then extract these links (with a function using html_attr("href")
etc.).
不幸的是,我无法获得单独页面的内容。当我使用httr:GET(url)
时,我得到一个错误消息(400坏请求)。
我想我得到这个错误信息是因为我的请求没有包含服务器需要的所有参数。有没有办法检查哪些参数是需要的,以便服务器理解我的请求?
示例:
#library
library(httr)
# read html
html <- GET("https://fsca.swissmedic.ch/mep/#/?q=Vk_20220224_16")
html
#> Response [https://fsca.swissmedic.ch/mep/#/?q=Vk_20220224_16]
#> Date: 2022-12-22 23:13
#> Status: 400
#> Content-Type: text/html; charset=iso-8859-1
#> Size: 347 B
#> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
#> <html><head>
#> <title>400 Bad Request</title>
#> </head><body>
#> <h1>Bad Request</h1>
#> <p>Your browser sent a request that this server could not understand.<br />
#> </p>
#> <p>Additionally, a 400 Bad Request
#> error was encountered while trying to use an ErrorDocument to handle the requ...
#> </body></html>
创建于2022年12月23日,使用reprex v2.0.2
- 更新**
我刚刚了解到,我可以使用Firefox检查所需的参数:
因此,我尝试使用httr::POST
,但仍然无法获得页面内容/表,只能获得"Loading..."
#library
library(httr)
library(jsonlite)
library(rvest)
# set parameter
body <- list(
queryTerm="Vk_20220224_16",
fromDate="",
toDate="")
# POST
res <- POST(
"https://fsca.swissmedic.ch/",
body = jsonlite::toJSON(body),
encode = "form",
verbose()
)
# get results
read_html(res)
#> {html_document}
#> <html>
#> [1] <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8 ...
#> [2] <body>\n<mep-app>Loading...</mep-app><script type="text/javascript" src=" ...
创建于2022年12月23日,使用reprex v2.0.2
1条答案
按热度按时间gudnpqoy1#
如何使用
httr2
请求使用搜索参数
文档的下载链接,可循环/Map为自动下载: