Auch wenn es eher selten vorkommt, müssen wir in manchen Fällen Daten außerhalb eines bestehenden Schleifenelements abrufen.
Nehmen wir an, wir wollen Daten von der Amazon Best Sellers Seite extrahieren. Für jedes Produkt müssen wir die Produktdetails und die Kategorie, zu der es gehört, gleichzeitig abrufen, wie in der Abbildung unten gezeigt:
Wenn wir eine Schleife nur für die Produkte erstellen, befinden sich die „Kategorie“-Daten offensichtlich außerhalb der „Produkt“-Schleife. Sie könnten versuchen, das Problem zu lösen, indem Sie eine weitere Schleife erstellen, um die Kategoriedaten zu erhalten. So sehr Sie es auch versuchen, es wird nicht gut ausgehen... denn Octoparse wird Sie anschreien, weil sich zwei Schleifen überschneiden. Aber wenn die neue Schleife völlig unabhängig von der bestehenden Schleife ist, können wir keine Daten zwischen den beiden Schleifen ermitteln.
Es scheint, dass wir in einem Dilemma stecken. Was können wir tun? Die Antwort ist eigentlich ganz einfach:
Verwenden Sie den XPath für die Produkt-Schleife als AXIS und schreiben Sie einen relativen XPath, um die Kategoriedaten zu finden.
Falls Sie immer noch verwirrt sind, erkläre ich es Ihnen Schritt für Schritt anhand einer Beispiel-Website:
Erstellen Sie eine Schleife für alle Produkte. Verwenden Sie bitte diesen Matching-XPath für die erstellte Schleife: //li[@class="a-carousel-card"]
Sie können in HTML-Code einen entsprechenden XPath finden.
Tipp: Wenn Sie die Methode zum Schreiben eines XPath noch nicht beherrschen, sehen Sie bitte dieses Tutorial: Was ist XPath und wie ihn zu verwenden?
Oben haben wir genannt, dass der XPath der Schleife hier ist: //li[@class="a-carousel-card"]
Wenn wir dies als Achse verwenden, können wir die Kategoriedaten auf der Grundlage dieser Achse ermitteln:
//li[@class="a-carousel-card"]/ancestor::div[@class="a-row a-carousel-controls a-carousel-row a-carousel-has-buttons"]/preceding-sibling::div[@class="a-row a-carousel-header-row a-size-large"]//h2
Da wir den Produkt-XPath als übereinstimmenden XPath für das Schleifen-Element (das der AXIS ist) festgelegt haben, sollte der XPath für das Produktdatenfeld leer gelassen werden, während der XPath für das Kategoriedatenfeld der Teil nach dem AXIS sein sollte.
Die Beispieloutput sieht wie folgend aus: