Сначала позвольте мне сказать, что я новичок в стеке и в Python.Я только начал работать с ним на прошлой неделе.Я, однако, опытный программист PHP / C ++ / Pascal / ADA / B / Forth (показывая мой возраст).
Я написал скрипт, который извлекает страницы продукта с веб-сайта и сохраняет их в моей локальной базе данных MySQL.Я сделал это, чтобы сканировать сайт поздно ночью, когда нагрузка мала.Теперь мне нужно разобраться в html каждой страницы и получить описания продуктов.Они размещены в таблицах.Однако каждая страница может иметь необходимые значения в разных строках / столбцах.
В чем я могу быть уверен:
- Каждая таблица имеет заголовок, который определяетданные в строках / столбцах под ним.
- Текст заголовка согласован для каждого значения, т. е. «Часть» всегда описывает тип детали и «Номер детали».всегда описывает номер детали.
- Не все страницы будут содержать все необходимые данные.Поэтому, если он не найден, он должен сохранить найденное.
В следующем разделе это вторая часть, получение значений данных, с которыми у меня возникли проблемы.Как выбрать n-й столбец из строки?
Мой текущий подход:
Чтобы получить желаемые столбцы
- Получить HTML-документ из БД
- Захватить таблицу (моя таблица всегда содержится в единственном элементе div на странице.
- Захватить все строки (в действительности нужно сделать это только для первой строки)
- Для каждой строки возьмите индекс строки и столбца ', когда я найду нужные имена полей.
Чтобы получить значения данных
- Для каждой строки:
- Пропустите строку, если это был заголовок (сохраните количество строк для полей с заголовками)
- для каждого столбца, захватите текстовое значение.
- Сохраните значения в db
Важная часть моей страницы выглядит так:
<div>
...
<table>
<tr><td> </td><td><b>Item</b></td><td> </td><td><b>Description</b></td><td> </td><td><b>Part No.</b></td><td> </td><td><b>Color</b></td><td> </td></tr>
<tr><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td></tr>
<tr><td> </td><td>Toaster</td><td> </td><td>2-Slice</td><td> </td><td>#25713</td><td> </td><td>Chorme</td><td> </td></tr>
</table>
...
</div>
Большое спасибо всем, кто откликнулся.