Ich versuche zu lernen, wie man RCurl (oder ein anderes geeignetes R-Paket, wenn ich falsch über RCurl ist das richtige Werkzeug) verwenden, um den Prozess der Übermittlung von Suchbegriffen zu einem Web-Formular und Platzierung der Suchergebnisse in einer Datendatei zu automatisieren. Das spezifische Problem, an dem ich arbeite, ist das folgende:
Ich habe eine Datendatei mit Kennzeichen (LPN) und Fahrzeugidentifikationsnummer (VIN) für mehrere Autos. Das California Department of Motor Vehicles (DMV) hat ein Suchformular auf seiner Website, in das man das Kennzeichen und die letzten fünf Ziffern der Fahrzeugidentifikationsnummer eingibt, und das die Zahlung der Kfz-Steuer (VLF) entweder für 2010 oder für 2009 ausgibt (auch dafür gibt es eine Auswahlmöglichkeit auf dem Eingabeformular). (Zu Ihrer Information: Dies ist für ein Forschungsprojekt, das die Verteilung der VLF-Zahlungen nach Fahrzeugmarke, Modell und Modelljahr untersucht)
Ich könnte mir die mühsame Arbeit machen, die Daten für jedes Fahrzeug manuell einzugeben und dann das Ergebnis manuell in eine Tabelle einzutippen. Aber wir leben im 21. Jahrhundert und ich möchte versuchen, den Prozess zu automatisieren. Ich möchte ein Skript schreiben, das jede Kfz-Kennnummer und jede Fahrgestellnummer an das DMV-Webformular übermittelt und dann das Ergebnis (die VLF-Zahlung) in eine neue VLF-Variable in meiner Datendatei einträgt, und zwar so lange, bis die Liste der Kfz-Kennnummern und Fahrgestellnummern vollständig ist. (Das DMV-Webformular finden Sie übrigens hier: https://www.dmv.ca.gov/FeeCalculatorWeb/vlfForm.do ).
Mein Plan war, getHTMLFormDescription() (im RHTMLForms-Paket) zu verwenden, um die Namen der Eingabefelder herauszufinden und dann getForm() oder postForm() (im RCurl-Paket) zu verwenden, um die Ausgabe abzurufen. Leider bin ich gleich beim ersten Schritt stecken geblieben. Hier ist der R-Befehl, den ich verwendet habe, und die Ausgabe:
> forms = getHTMLFormDescription("https://www.dmv.ca.gov/FeeCalculatorWeb/vlfForm.do")
Error in htmlParse(url, ...) :
File https://www.dmv.ca.gov/FeeCalculatorWeb/vlfForm.do does not exist
Da ich relativ neu in R und fast völlig neu in HTTP und Web-Scraping bin, weiß ich leider nicht, was ich als nächstes tun soll.
Erstens, weiß jemand, warum ich einen Fehler auf meinem getHTMLFormDescription() Aufruf erhalte? Oder gibt es eine andere Möglichkeit, die Namen der Eingabefelder herauszufinden?
Zweitens, können Sie einige Beispielcodes vorschlagen, die mir dabei helfen, die LPNs und VINs tatsächlich zu übermitteln und die Ausgabe abzurufen? Ist getForm() oder postForm() der richtige Ansatz oder sollte ich etwas anderes tun? Wenn es helfen würde, einige echte LPN-VIN-Kombinationen zu übermitteln, hier sind drei:
LPN VIN
5MXH018 30135
4TOL562 74735
5CWR968 11802
Da Sie sehen können, dass ich ein absoluter Anfänger bin, haben Sie Vorschläge, was ich lernen muss, um Web Scraping dieser Art zu beherrschen und wie ich es lernen kann (in R oder in einer anderen Sprache)? Spezifische Vorschläge für Websites, Bücher, Listservs, andere StackOverflow-Fragen usw. wären großartig.
Vielen Dank für Ihre Hilfe.