Отказ от ответственности: плохо знакомый с scrapy.
У меня есть таблица с довольно нерегулярными строками. Основная структура:
<tr>
<td> some text </td>
<td> some other text </td>
<td> yet some text </td>
</tr>
, но иногда (несколько сотен раз) некоторые строки
<tr>
<td> <p> some text <p> </td>
<td> <div class="class-whateva"> <p> some other text </p></div> </td>
<td> <span id="strange-id">
<a href="somelink"> yet some text </a>
<span> </td>
</tr>
или другие перестановки из 1 или 2 вложенных «p», «div» и «span» с или без символов обратной строки.
Я позаботился о вложенном «span span» или «p div» или «div span» с помощью условных выражений вида:
for row in allrows:
if row.select('td[2]/text()'):
item['seconditem']=row.select('td[2]/text()').extract()
elif row.select('td[2]/*/text()'):
item['seconditem']=row.select('td[2]/*/text()').extract()
elif row.select('td[2]/*/*/text()'):
item['seconditem']=row.select('td[2]/*/*/text()').extract()
Теперь у меня два вопроса:
(1) Является ли условный
td[2]/*/*/text()
правильным способом для неправильных вложенных строк?
(2) Я все еще пропускаю все случаи, когда естьвозврат (или перевод строки) перед тегом.Так что, если строка имеет вид:
<td><div>
<p>text </p>
</div></td>
Все, что мой xpath вернет, будет ['\ n'].Любой трюк, чтобы поймать, что после символа новой строки?
Любые советы приветствуются.Спасибо.