2 Stimmen

curl, sed // Kennt jemand einen besseren Weg, um Informationen aus dem Web zu holen und zu verarbeiten?

Ich wollte sehen, wie viele Patentanwälte und Patentagenten sich beim US-Patent- und Markenamt registrieren lassen. Das USPTO bietet eine .zip-Datei mit Daten zu Anwälten und Vertretern an, aber seltsamerweise sind in der .zip-Datei nicht die Daten der Registrierung enthalten. Diese Daten sind nur auf der Website des USPTO unter den einzelnen Anwälten und Vertretern angegeben.

Um die Daten abzurufen, habe ich Folgendes verwendet:

curl -q https://oedci.uspto.gov/OEDCI/details.do?regisNum=[25560-69398:500] | sed -e 's/<[^>]*>//g' | sed -n -e '/Registered/,/nbsp/p' -e '/Registration/,/nbsp/p' | sed -e 's/&nbsp;//g' > dates.txt

Da ich nur so viele Daten benötigte, um den Trend zu ermitteln, entschied ich mich dafür, die Registrierungsdaten für jeden 500sten Anwalt/Vertreter heranzuziehen.

Am Ende hatte ich eine Datei, die etwas mehr Informationen enthielt, als ich brauchte (z. B. brauchte ich die Überschriften nicht, nur die Registrierungsnummern und -daten), aber die Datei war klein genug, um sie von Hand zu bearbeiten und anschließend zu plotten.

Frage: Gibt es einen besseren und/oder einfacheren Weg, um das zu erreichen, was ich hier vorhabe? Es wäre zum Beispiel sehr schön, wenn ich nichts von Hand bearbeiten müsste, sondern direkt Daten in Spalten für die grafische Darstellung erzeugen könnte.

Vorbehalte:
1) Manche Anwälte haben zwei Registrierungsdaten, eines für die Registrierung als Bevollmächtigter und eines für die Registrierung als Anwalt. Ich benötige nur das erste Datum und musste die zweiten Daten per Hand ausschneiden.
2) Einige Registrierungsnummern existieren nicht. Wenn in meinem Datensatz mit dem/den oben genannten Befehl(en) eine Registriernummer nicht existiert, wurde sie übersprungen.

Danke!

0voto

Eduardo Ivanec Punkte 11372

Curl (oder ein ähnliches Tool) und regexes können Sie einen langen Weg für schnelle und schmutzige Lösungen, aber wie Sie jetzt wissen, sie sind nicht richtig für schwere Sachen.

Was Sie brauchen, ist ein Scraper, der Ihnen hilft, alle Schritte bei der Verarbeitung der Webseiten zu automatisieren; oder zumindest einen vollwertigen HTML-Parser, um zuverlässig Informationen aus den (hoffentlich einigermaßen gut strukturierten) Seitendaten zu extrahieren. Es gibt viele davon für fast alle gängigen Sprachen, so dass die Antwort davon abhängt, mit welcher Sprache Sie mehr vertraut sind. Wenn Sie zum Beispiel mit Python vertraut sind, scrapy ist eine bekannte Lösung für die vollständige Abstreifung. bs4 hat eine schöne Schnittstelle für die Datenextraktion.

0voto

Lee Netherton Punkte 19699

Wenn Sie Python-Code ausführen können, kann ich Ihnen die Verwendung von Schöne Suppe .

0voto

Strapakowsky Punkte 2263

Wenn Sie Python beherrschen, werfen Sie einen Blick auf html5lib .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X