我正在尝试用登录名来刮擦网站。使用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身体部分提交填充表格?
查找和替换有问题的项目的技巧:
pgsession$response$content <- charToRaw(gsub("<!-- <!","n</html><!-- <!",(gsub("n</html>","",httr::content(pgsession$response, as="text")))))