Я использую Python Scrapy для очистки некоторых данных с веб-сайта. На сайте есть несколько таблиц. Например, у него 50 состояний, и в каждом из них есть таблицы от 3 до 5, и я очищаю только таблицу 3.
table_3 = response.xpath(
'//*[@id="all"]/div[3]/div/div/div[2]/div/div/div/table[3]').extract()
, а в таблице 3 строки от 3 до 10.
rows = [item for idx, item in enumerate(
table_3) if idx in indices]
Индексы, используемые для определения, существует ли таблица 3, в противном случае она не будет добавлена в строки
Чтобы получить значение <td>
, я удаляю все ненужные данные из списка строк.
td = []
for each in rows:
temp = (each.replace('<table class="unwanted date">',
'').replace('<tr>', '').replace('</tr>', '').replace('<td>', '').replace('</td>', '').replace('unwanted date', '').replace('unwanted date', '').replace('\n', '').replace(' ', '').replace('</table>', ''))
td.append(temp.split('%'))
for each in td:
print('The td are', each)
Это не дает мне вывод в правильном формате, и этот метод не работает эффективно.
table_3 = response.xpath(
'//*[@id="all"]/div[3]/div/div/div[2]/div/div/div/table[3]').extract()
rows = [item for idx, item in enumerate(
table_3) if idx in indices]
td = []
for each in rows:
temp = (each.replace('<table class="unwanted date">',
'').replace('<tr>', '').replace('</tr>', '').replace('<td>', '').replace('</td>', '').replace('unwanted date', '').replace('unwanted date', '').replace('\n', '').replace(' ', '').replace('</table>', ''))
td.append(temp.split('%'))
for each in td:
print('The td are', each)
Output: The td are ['$0+4', '$11,230+5.84', '$22,470+6.27', '$247,350+7.65', '']
Expected Output: The td are ['$0+', '$11,230+', '$22,470+', '$247,350+']['4', '5.84', '6.27', '7.65']
Как мне этого добиться?