这并不能解决您的问题(有大量的 RSelenium SO 响应和博客文章来帮助您使用 RSelenium),但是对于这个站点来说,您必须这样做的“原因”是丑陋的(它提供了一个指向您的位置的指针必须以 URL 方式启动 RSelenium 方法才能工作)。
该站点在服务器端使用“Java Server Faces”以及 javascript 来维护状态和增强导航。您实际上必须从https://www.efast.dol.gov/portal/app/disseminate 开始,以便后端可以正确启动您的会话。
填写完这两个字段后,它会发出一个如下所示的POST 请求(以“复制为cURL”格式):
curl -i -s -k
-X 'POST'
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:43.0) Gecko/20100101 Firefox/43.0'
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Faces-Request: partial/ajax'
-H 'X-Requested-With: XMLHttpRequest' -H 'Referer: https://www.efast.dol.gov/portal/app/disseminate?execution=e1s1'
-b 'JSESSIONID=0000UG27GxfJ4sVgFVXnUi3Ix9C:18fl2akcj'
--data-binary $'javax.faces.partial.ajax=true&javax.faces.source=form%3Anextbtn&javax.faces.partial.execute=%40all&javax.faces.partial.render=form&form%3Anextbtn=form%3Anextbtn&form=form&planName=&sponsorName=&administratorName=&filingId=&ackId=&ein=060646973&pn=001&form%3Aj_idt939%3Apybcalendar_input=&form%3Aj_idt942%3Apyecalendar_input=&formYear=&form%3AnumResults_input=100&form%3AnumResults_editableInput=100&javax.faces.ViewState=e1s1'
'https://www.efast.dol.gov/portal/app/disseminate?execution=e1s1'
我发布它是为了让您看到它提交的一些附加字段,这些字段最初并不直接在 <form> 中。
对POST 的回复类似于:
HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache
Cache-Control: no-store
X-Powered-By: JSF/2.0
X-Powered-By: JSF/2.0
X-UA-Compatible: IE=EmulateIE7
Content-Type: application/xml; charset=UTF-8
Content-Language: en-US
Date: Fri, 23 Dec 2016 13:10:26 GMT
Content-Length: 142
Connection: keep-alive
<?xml version='1.0' encoding='UTF-8'?>
<partial-response><redirect url="/portal/app/disseminate?execution=e1s2"></redirect></partial-response>
这是一个 Java Server Faces AJAX 重定向响应,最终会导致您被重定向到结果页面,实际结果位于 <<table role="treegrid"> 中(旨在帮助您在它返回的可怕 HTML 中定位表格)。
然后,您需要弄清楚如何确保您可以单击复选框并下载信息。
自动导航中的任何错误步骤都将导致会话中断。因此,您可能需要进行繁琐的试错以确保目标选择操作正确。