Looping durch habe ich folgendes XPath:td Kinder eines tr Element in Python lxml
errors = root.xpath('/html/body/div[3]/form/table[4]/tr[2]/text()')
Innerhalb dieses HTML (einige für weniger entfernten Teile eines großen Beispiel)
...
<TABLE CLASS="datadisplaytable" SUMMARY="This layout table is used to present Registration Errors.">
<TR>
<TH CLASS="ddheader" scope="col" >Status</TH>
<TH CLASS="ddheader" scope="col" ><ACRONYM title = "Course Reference Number">CRN</ACRONYM></TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = Subject>Subj</ABBR></TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = Course>Crse</ABBR></TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = Section>Sec</ABBR></TH>
<TH CLASS="ddheader" scope="col" >Level</TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = "Credit Hours">Cred</ABBR></TH>
<TH CLASS="ddheader" scope="col" >Grade Mode</TH>
<TH CLASS="ddheader" scope="col" >Title</TH>
</TR>
<TR>
<TD CLASS="dddefault">DUPLICATE <ACRONYM title = "Course Reference Number">CRN</ACRONYM></TD>
<TD CLASS="dddefault">33587</TD>
<TD CLASS="dddefault">UNIV</TD>
<TD CLASS="dddefault">E101</TD>
<TD CLASS="dddefault">941</TD>
<TD CLASS="dddefault">Undergraduate Quarter</TD>
<TD CLASS="dddefault"> </TD>
<TD CLASS="dddefault"> </TD>
<TD CLASS="dddefault">The Drexel Experience</TD>
</TR>
</TABLE
>
....
Der Ausgang ich bekomme ist:
['\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n']
Was interessant ist, ist, wenn ich die genaue td
Index nach dem 012 angeben, wie der folgende Code, erhalte ich Ausgabe:
errors = root.xpath('/html/body/div[3]/form/table[4]/tr[2]/td[1]/text()')
Der Ausgang:
['DUPLICATE ']
Es scheint, wie ich in einer Schleife durch die Liste müssen, so habe ich versucht, diese, die auch nicht funktionierte.
for error in errors:
print error
warum die Auswahl von Text() auf der tr, wenn Sie durch seine iterieren wollen Kinder td? Sie könnten einfach './table/tr' verwenden, um die Zeilen zu erhalten, und dann für jede Zeile' td', um die Daten auszuwählen. – postelrich