/ / Einrichten des Crawlers import.io mit xpath oder regexp - regex, xpath, web-crawler, import.io

Einrichten des import.io-Crawlers mit xpath oder regexp - regex, xpath, web-crawler, import.io

Ich versuche gerade einen Webcrawler einzurichtenDaten von Immobilien-Websites extrahieren. Es ist ein Trend bei diesen Sites, dass bestimmte Informationen nicht für jede Seite an der gleichen Stelle gespeichert sind. Daher muss ich herausfinden, wie Textelemente extrahiert werden, die bestimmte Ausdrücke enthalten, und nicht danach, wo sie sich befinden. Hier einige Beispiele für solche Seiten:

http://www.zillow.com/homedetails/2630-Hazy-Creek-Dr-Houston-TX-77084/28388488_zpid/

http://www.zillow.com/homedetails/16514-Park-Firth-Dr-Houston-TX-77084/28357799_zpid/

Beachten Sie, wie bestimmte Informationen wie die MLS # angezeigt werdenan verschiedenen Stellen. Wenn ich den xpath aus einem dieser Einträge extrahiere, erhalte ich: // * [@ id = "yui_3_15_0_1_1435013689406_3296"], und da ich mit xpath nicht allzu vertraut bin, weiß ich nicht, wie ich es ändern soll, um nach etwas zu suchen phrase (Ich habe es auf jeden Fall versucht, aber es funktioniert nie). Regexp scheint ein vielversprechendes Werkzeug zu sein, aber wenn ich den Befehl ^ MLS verwende, der nach Elementen suchen sollte, die mit "MLS" beginnen, funktioniert es einfach nicht. Ich weiß, es muss eine einfache Möglichkeit geben, dies zu tun, aber ich benutze diesen Service zum ersten Mal, daher bin ich noch nicht so vertraut damit. Und Ratschläge wären sehr willkommen.

Antworten:

6 für die Antwort № 1

Mit Regex können Sie keine Daten extrahieren, sondern nur bereits extrahierten Text bereinigen oder ändern.

Sie müssen einen XPath erstellen, um die gewünschten Daten zu extrahieren. Ich habe eine für Sie als Beispiel gemacht:

//*[@role="main"]//li[contains(text(), "MLS ")]

Erläuterung: Das sucht nach dem Hauptabschnitt der Seite und sucht dann nach a <li> das enthält den Text "MLS". Das wird so etwas extrahieren "MLS #: 66521347"

Sie können nun den Spaltentyp als "Nummer" auswählen, um nur die Nummer zu erhalten (Sie können dies auch mit Regex tun, das ist genau die Art von Dingen, die Sie damit machen können).

BEARBEITEN: Obwohl dieser XPath korrekt ist, werden die Daten in import.io nicht zurückgegeben. Es gibt eine andere Möglichkeit, dies zu tun: Verwenden Sie einen XPath, um den gesamten Text in diesem Abschnitt abzurufen, und verwenden Sie dann Regex, um den MLS auszuwählen.

Zu verwendender XPath:

//*[@role="main"]/section[@class="zsg-content-section "][1]

Regex zu verwenden:

MLS #: (d+)