Я уверен, что на этот вопрос есть простой ответ, но после нескольких часов исследований и испытаний я так и не решил проблему.
Вот проблема.Недавно я начал использовать селен для сбора информации с веб-сайта, который создает динамические таблицы.Во время тестирования я заметил, что у меня были некоторые проблемы, когда я проверял собранные данные.После некоторой проверки данных я заметил, что в некоторых полях таблицы отсутствовал текст, что привело к ошибкам, обнаруженным во втором разделе кода.Я решил обойти эти записи таблицы в своем коде, но все равно получаю ошибки, поэтому мой код неверен.
# I'm obtaining the <td> tags in the table
# with this.
td = row.find_elements_by_xpath(".//td")
# I slice out the desired items this way
# This outputs a <class 'str'>
td[3].text
# I found that this item has no text in some
# table rows, which causes issues. I have tried
# using the following to catch and bypass these
# rows
if not td[3].text:
pass
else:
# run some code
# harvest the entire row
if len(td[3].text) != 0:
# run some code
# harvest the entire row
else:
pass
if len(td[3].text) == 11:
# run some code
# harvest the entire row
else:
pass
if td[3].text) != '':
# run some code
# harvest the entire row
else:
pass
# this element is the one that might be empty
td_time = row.find_element_by_xpath(".//td[4]/span/time")
if (len(td_time.text)) != 11:
print ('no')
elif (len(td_time.text)) == 11:
print ('yes')
Таблица, которую я очищаю, имеет пять столбцов.Последний столбец содержит даты, которые отсутствуют в некоторых строках, содержащих более старые данные.
# Example with date
<td headers="th-date th-4206951" class="td-date">
<b class="cell-label ng-binding">Publish Date</b>
<span class="cell-content"><time datetime="2019-06-05T00:00:00Z" class="ng-binding">04 Jun 2019</time></span>
</td>
# Example without date
<td headers="th-date th-2037023" class="td-date">
<b class="cell-label ng-binding">Publish Date</b>
<span class="cell-content"><time datetime="" class="ng-binding"></time></span>
</td>
Ни один из этих примеров кода не улавливает пустые текстовые блоки, что вызывает проблемы при последующей обработке собранных данных.
Поэтому мой вопрос: как мне обойти элемент, полученный с использованиемXPATH, у которого нет текста?