Я не знаю, как заставить мою логику работать в моем случае.
Я хочу извлечь строку из таблицы, из которой заранее не знаю количество столбцов.Вот источник:
<article class="col-md-10 col-md-push-1">
<b>Quantités recommandées (g/jour) :</b><br>
<br>
<table border="1" width="80%">
<colgroup>
<col width="2*">
<col width="1*">
<col width="1*">
<col width="1*">
</colgroup>
<tbody>
<tr>
<td align="center"><small><b>Poids du chat</b></small></td>
<td align="center"><small><b>Maigre</b></small></td>
</tr>
<tr>
<td align="center"><small>2 kg</small></td>
<td align="center"><small>39 g</small></td>
</tr>
<tr>
<td align="center"><small>3 kg</small></td>
<td align="center"><small>52 g</small></td>
</tr>
<tr>
<td align="center"><small>4 kg</small></td>
<td align="center"><small>63 g</small></td>
</tr>
<tr>
<td align="center"><small>5 kg</small></td>
<td align="center"><small>74 g</small></td>
</tr>
<tr>
<td align="center"><small>6 kg</small></td>
<td align="center"><small>84 g</small></td>
</tr>
<tr>
<td align="center"><small>7 kg</small></td>
<td align="center"><small>94 g</small></td>
</tr>
<tr>
<td align="center"><small>8 kg</small></td>
<td align="center"><small>103 g</small></td>
</tr>
<tr>
<td align="center"><small>9 kg</small></td>
<td align="center"><small>112 g</small></td>
</tr>
<tr>
<td align="center"><small>10 kg</small></td>
<td align="center"><small>121 g</small></td>
</tr>
</tbody>
</table>
</article>
Для извлечения я жестко запрограммировал это:
feeding_box_table=response.xpath('//*[@id="feedingrecommendation-panel"]/div/article/table')
feeding_recommendation=[]
if feeding_box_table!=[]:
for tr in feeding_box_table.xpath("tr"):
tds=tr.xpath('td/small/b/text()|td/small/text()').extract()
feeding_recommendation.append(tds)
Однако, когда я хочу реализовать это жестко запрограммированное решение с загрузчиком элементов, это становится сложно, потому что я могуитерируйте в feeding_box_table.xpath("tr")
, поскольку значение, полученное в out_processor, представляет собой str
, а не объект, в котором собирается xpath
.
Я не знаю, должны ли процессоры использовать этот способ на самом деле.Вот почему я попытался сделать все с помощью xpat, например: table=response.xpath('//*[@id="feedingrecommendation-panel"]/div/article/table/td/small/text()') but the output is not structured.
Вывод не был удовлетворительным, как он был: Вывод: ["Poids du chat","Maigre","2 kg","39 g",...."10 kg", "121 g"]
Вот почему я хотел перебрать<tr></tr>
Желаемый результат: [["Poids du chat","Maigre"],["2 kg","39 g"],....["10 kg", "121 g"]]
Любая помощь приветствуется.С уважением