2015-06-05 3 views
7

Ich versuche, einen Crawler zu erstellen, um einige Attributdaten von Lieferanten Websites zu extrahieren, die ich gegen unsere interne Attributdatenbank und neu zu import.io überprüfen kann. Ich habe eine Reihe von Videos angesehen, aber obwohl meine Syntax korrekt zu sein scheint, gibt meine manuelle Xpath-Überschreibung keine Attributwerte zurück. Ich habe den HTML-Code folgende Beispiel:XPath following-gleichrangige für Crawling nicht zurück Geschwister

<table> 
<tbody><tr class="oddRow"> 
<td class="label">&nbsp;Adhesive Type&lrm;</td><td>&nbsp;Epoxy&lrm; 
</td> 
</tr> 
<tr> 
<td class="label">&nbsp;Applications&lrm;</td><td>&nbsp;Hard Disk Drive Component Assembly&lrm; 
</td> 
</tr> 
<tr class="oddRow"> 
<td class="label">&nbsp;Brand&lrm;</td><td>&nbsp;Scotch-Weld&lrm; 
</td> 
</tr> 
<tr> 
<td class="label">&nbsp;Capabilities&lrm;</td><td>&nbsp;Sustainability&lrm; 
</td> 
</tr> 
<tr class="oddRow"> 
<td class="label">&nbsp;Color&lrm;</td><td>&nbsp;Clear Amber&lrm; 
</td> 

Ich versuche, eine XPath folgende Geschwister Erklärung zu schreiben „Farbe“ durch eine import.io Crawler zu greifen. Der XPath-Code, wenn ich „Farbe“ wählen ist:

//*[@id="attributeList"]/table/tbody/tr[5]/td[1] 

Ich habe versucht zu verwenden:

//*[@id="attributeList"]/table/tbody/tr/td[.="Color"]/following-sibling::td 

Aber es ist grabbing nicht die Farbe Attributwert aus der Tabelle. Ich bin mir nicht sicher, ob es etwas mit den ungeraden und geraden Reihenklassen zu tun hat. Wenn ich mir den HTML-Code ansehe, scheint er logisch zu sein. Farbe ist "Farbe" und der Attributwert ist in der folgenden td-Klammer.

Antwort

7

Der Text im ausgewählten Knoten td enthält mehr als nur "Color". Es ist &nbsp;Color&lrm;. Anstatt also könnten Sie td Knoten auswählen, deren Text contains die Zeichenfolge "Color":

'//*[@id="attributeList"]/table/tbody/tr/td[contains(text(), "Color")]/following-sibling::td/text()' 
+1

Das funktionierte, vielen Dank! Das hat funktioniert! –

Verwandte Themen