Уведомления

Группа в Telegram: @pythonsu

#1 Март 11, 2016 10:19:39

alex_sv
Зарегистрирован: 2016-03-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с парсингом, пожалуйста.

Есть вот такой HTML:

<div class="char c0 first ">
<div class="characteristic">Серия </div>
<div class="value"> ProLiant  </div>
<div class="clear"/>
</div>
<div class="char c1 ">
<div class="characteristic">Тип корпуса </div>
<div class="value"> Rack  </div>
<div class="clear"/>
</div>
<div class="char c0 ">
<div class="characteristic">Монтаж в стойку </div>
<div class="value"> 2U  </div>
<div class="clear"/>
</div>
<div class="char c1 ">
<div class="characteristic">Для процессоров </div>
<div class="value"> Intel  </div>
<div class="clear"/>
</div>
<div class="char c0 ">
<div class="characteristic">Серия процессора </div>
<div class="value"> Xeon  </div>
<div class="clear"/>
</div>
Это таблица на самом деле.

Надо поиском по столбцу characteristic возвращать значение из столбца value.

Я пробовал вот так, но видать что-то наблудил:
l.add_xpath('line', "//div/following-sibling::div/text()“ % u”Серия ")

Офлайн

#2 Март 11, 2016 13:30:00

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Помогите с парсингом, пожалуйста.

Напрямую через value

>>> import lxml.html
>>> 
>>> s = """
... <div class="char c0 first ">
... <div class="characteristic">Серия </div>
... <div class="value"> ProLiant  </div>
... <div class="clear"/>
... </div>
... <div class="char c1 ">
... <div class="characteristic">Тип корпуса </div>
... <div class="value"> Rack  </div>
... <div class="clear"/>
... </div>
... <div class="char c0 ">
... <div class="characteristic">Монтаж в стойку </div>
... <div class="value"> 2U  </div>
... <div class="clear"/>
... </div>
... <div class="char c1 ">
... <div class="characteristic">Для процессоров </div>
... <div class="value"> Intel  </div>
... <div class="clear"/>
... </div>
... <div class="char c0 ">
... <div class="characteristic">Серия процессора </div>
... <div class="value"> Xeon  </div>
... <div class="clear"/>
... </div>
... """
>>> 
>>> doc = lxml.html.fromstring(s)
>>> lst = doc.xpath(r'//div[@class="value"]/text()')
>>> lst
[' ProLiant  ', ' Rack  ', ' 2U  ', ' Intel  ', ' Xeon  ']
>>>

Через characteristic и следующий за ним
>>> import lxml.html
>>> 
>>> s = """
... <div class="char c0 first ">
... <div class="characteristic">Серия </div>
... <div class="value"> ProLiant  </div>
... <div class="clear"/>
... </div>
... <div class="char c1 ">
... <div class="characteristic">Тип корпуса </div>
... <div class="value"> Rack  </div>
... <div class="clear"/>
... </div>
... <div class="char c0 ">
... <div class="characteristic">Монтаж в стойку </div>
... <div class="value"> 2U  </div>
... <div class="clear"/>
... </div>
... <div class="char c1 ">
... <div class="characteristic">Для процессоров </div>
... <div class="value"> Intel  </div>
... <div class="clear"/>
... </div>
... <div class="char c0 ">
... <div class="characteristic">Серия процессора </div>
... <div class="value"> Xeon  </div>
... <div class="clear"/>
... </div>
... """
>>> 
>>> doc = lxml.html.fromstring(s)
>>> lst = doc.xpath(r'//div[@class="characteristic"]/following-sibling::div/text()')
>>> lst
[' ProLiant  ', ' Rack  ', ' 2U  ', ' Intel  ', ' Xeon  ']
>>>



Отредактировано py.user.next (Март 11, 2016 13:33:00)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version