我正在尝试使用登录名抓取网站。使用rvest代码可以很容易地做到这一点:
url <- "https://badsite.com/users/login"
pgsession <- html_session(url)
pgform <- html_form(read_html(pgsession))[[1]]
filled_form <- set_values(pgform, email="*****", password="*****")
submit_form(pgsession, filled_form)
但是,目标网页的结构不良,并且在错误的位置有一个html结束标记</html>
,看起来像这样:
<html>
<head>
<meta charset="utf-8">
...
</head>
</html>
<body>
<div class="container" id="Login_page">
...
<form method="post" action="."><input type='hidden' ...
...
</div>
</body>
我对rvest(v0.3.2)的使用目前导致...
Error in html_form(read_html(pgsession))[[1]] : subscript out of bounds
...我将其放入未读取的完整html文件中。
如何使用R代码优雅地忽略过早的结束标记,并从否则为html正文部分提交已填写的表格?
答案 0 :(得分:0)
找到并替换有问题的项可以解决问题:
pgsession$response$content <- charToRaw(gsub("<!-- <!","\n</html><!-- <!",(gsub("\n</html>","",httr::content(pgsession$response, as="text")))))