Dies löst Ihr Problem nicht (es gibt viele RSelenium SO-Antworten und Blog-Posts, die Ihnen helfen, RSelenium zu verwenden), aber das "warum" müssen Sie für diese Website hässlich sein (und es gibt einen Zeiger für wo Sie müssen URL-weise starten, damit der RSelenium-Ansatz funktioniert.
Die Seite verwendet "Java Server Faces" auf der Serverseite zusammen mit Javascript, um die Status- und erweiterte Navigation zu verwalten. Sie werden haben, um bei https://www.efast.dol.gov/portal/app/disseminate zu starten, damit das hintere Ende Ihre Sitzung richtig beginnen kann.
Sobald Sie in den beiden Feldern füllen, macht es eine POST
Anforderung, die (in „Copy als curl“ Format) wie folgt aussieht:
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'
ich schreiben Sie einige der zusätzlichen Felder sehen zu lassen, es behauptet, dass nicht direkt in der <form>
zunächst.
Die Antwort darauf, dass POST
ist so etwas wie:
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>
die ein Java-Server ist Faces AJAX Antwort umleiten, die letztlich bewirkt, dass Sie auf der Ergebnisseite mit den tatsächlichen Ergebnissen in einem <<table role="treegrid">
(vorausgesetzt umgeleitet werden helfen Sie, die Tabelle in dem schrecklichen HTML zu adressieren, das es zurückbringt).
Sie müssen dann herausfinden, wie Sie sicherstellen können, dass Sie auf die Kontrollkästchen klicken und die Informationen herunterladen können.
Jeder Fehlschritt in der automatisierten Navigation führt zum Abbruch der Sitzung. Also, Sie können für eine langwierige Probe & Fehler, um sicherzustellen, dass die Zielauswahl Aktionen korrekt sind.
Können Sie andere Suchparameter teilen, z. B. Anmelde-ID, Bestätigungs-ID. –
Sie benötigen 'RSelenium' für die Formularfüllung, ich wäre überrascht, wenn Sie das mit' rvest' alleine machen könnten. –