Найти - Пользователи
Полная версия: Помогите с парсингом, пожалуйста.
Начало » Центр помощи » Помогите с парсингом, пожалуйста.
1
alex_sv
Есть вот такой 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”Серия ")
py.user.next
Напрямую через 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  ']
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB