r-当html结束标签在错误的位置时,请使用rvest



我正在尝试用登录名来刮擦网站。使用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")))))

相关内容

最新更新