Я пытаюсь создать парсер, который очистит данные из таблицы, содержащие информацию о наркотиках, таких как имя, форму и цену лекарственного средства. Проблема в том, что некоторые значения отсутствуют там, поэтому, когда я соскабливаю, порядок данных нарушается. Пожалуйста, взгляните ниже, чтобы лучше понять проблему.Скребок пустых полей из таблицы
форма Таблица:
+---------+----------+-------+
| name | form | price |
+---------+----------+-------+
| aspirin | 3 pills | 1 |
| aspirin | 5 pills | |
| aspirin | 10 pills | 3 |
+---------+----------+-------+
Каждое поле цены является HTML ссылку, так что HTML этой таблицы выглядит следующим образом:
<table>
<tr>
<td>name</td>
<td>form</td>
<td>price</td>
</tr>
<tr>
<td>aspirin</td>
<td>3 pills</td>
<td><a href="http://x.html">1</a></td>
</tr>
<tr>
<td>aspirin</td>
<td>5 pills</td>
<td></td>
</tr>
<tr>
<td>aspirin</td>
<td>10 pills</td>
<td><a href="http://x.html">3</a></td>
</tr>
</table>
Какой самый лучший способ для извлечения полей цена от этого table, ВКЛЮЧАЯ также пустое поле, чтобы получить возвращенный элемент в этой форме: ['1', '', '3'].
При использовании xpath "// table/tr/td [3]/a/text() пустые поля опущены, и я получаю это: ['1', '3'].
Я думал о сканировании данных с помощью этого xpath: // table/tr/td [3]/", а затем преобразовал его в конвейер. Тем не менее, я надеюсь, что есть некоторые проще решение этой проблемы, вызывают данные, которые я сползать с оригинального сайта является немного более осложнила и в результате я получаю это:
[u'<td>\r\n\t\t\t\t</td>',
u'<td>\r\n\t\t \r\n \t\t\t\t\t<a class="tooltip-lek" href="#" rel="#tooltip169815" title="Odp\u0142atno\u015b\u0107 po refundacji">3.20</a>\xa0\xa0\xa0\r\n\t\t\t<div style="display:none;" id="tooltip169815">\r\n\t\t\t\t<table>\r\n\t\t\t\t<tbody>\r\n\t\t\t\t\r\n\t\t\t\t<tr>\r\n\t\t\t\t<td style="padding-right:5px;">lek wydawany za odp\u0142atno\u015bci\u0105 rycza\u0142tow\u0105 (3,20 z\u0142) do wysoko\u015bci limitu:</td>\r\n\t\t\t\t<td>we wskazaniach: choroba afektywna dwubiegunowa, schizofrenia</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t\r\n\t\t\t\t</tbody>\r\n\t\t\t\t</table>\r\n\t\t\t</div>\r\n\t\t\t\t\t\t\t</td>',
u'<td>\r\n\t\t\t\t</td>']
Благодарим вас за ответ. Предоставленный soltuion работает, но только частично. В результате на реальном примере я получаю это: [u '\ r \ n \ t \ t \ t \ t', u '\ r \ n \ t \ t \ r \ n \ t \ t \ t \ т \ t3.20 \ xa0 \ xa0 \ xa0 \ г \ п \ т \ т \ т \ г \ п \ т \ т \ т \ т \ г \ п \ т \ т \ т \ т \ г \ п \ t \ t \ t \ t \ r \ n \ t \ t \ t \ t \ r \ n \ t \ t \ t \ tlek wydawany za odp \ u0142atno \ u015bci \ u0105 rycza \ u0142tow \ u0105 (3,20 z \ u0142) do wysoko \ u015bci limitu: \ r \ n \ t \ t \ t \ twe wskazanych: choroba afektywna dwubiegunowa, schizofrenia \ r \ n \ t \ t \ t \ t \ r \ n \ t \ t \ t \ т \ г \ п \ т \ т \ т \ т \ г \ п \ т \ т \ т \ т \ г \ п \ т \ т \ т \ г \ п \ т \ т \ т \ т \ т \ t \ t ', u' \ r \ n \ t \ t \ t \ t '], которому по-прежнему требуется много форматирования. –
Возможно, исходный код webstie будет полезен: [link] (http://bazalekow.mp.pl/leki/item.html?id=22369&item_id=81272) –
Используя вашу примерную страницу, я предлагаю вам попробовать '[u '.join (cell.xpath (' ./ a/text() | ./text() '). extract()). strip() для ячейки в sel.xpath (' // table // tr/td [5] ')] ' –