2013-12-16 4 views
1

Как разобрать HTML-таблицу с помощью pyquery? [См Исходный код HTML таблицу на http://pastie.org/pastes/8556919Как разобрать HTML-таблицу с помощью pyquery?

Результат: {

"category_1": { "cat1_el1_label": "cat1_el1_value"},

"category_2": { "cat2_el1_label": "cat2_el1_value »},

"category_3": { "cat3_el1_label": "cat3_el1_value"}

}

Спасибо очень.

+0

что вы наделали? Что вы пробовали? Кроме того, beautifulsoup - отличная библиотека для этого, а также http://www.crummy.com/software/BeautifulSoup/ –

ответ

2

Простой способ:

from pyquery import PyQuery 
from collections import defaultdict 

doc = PyQuery(html) 
values = defaultdict(dict) 
for tr in doc('tr').items(): 
    if tr('th.title'): 
     title = tr('th.title').text() 
    else: 
     items = zip(tr('.properties_label').items(), 
        tr('.properties_value').items()) 
     values[title].update(dict([(k.text(), v.text()) for k, v in items])) 

Результат:

defaultdict(<type 'dict'>, {'Category_3': {'cat3_el1_label': 'cat3_el1_value'}, 
          'Category_2': {'cat2_el1_label': 'cat2_el1_value'}, 
          'Category_1': {'cat1_el1_label': 'cat1_el1_value'}}) 
0

Что-то вроде этого ... Хотя я не знаю, как я чувствую о pyquery (попробуйте BeautifulSoup)

from pyquery import PyQuery as pq 

>>> p = pq(html) 
>>> p = d(".properties_label span") 
>>> for x in p: 
... print x.text 
... 
cat1_el1_label 
cat2_el1_label 
cat3_el1_label 

>>> p = d(".properties_value") 
>>> for x in p: 
... print x.text 
... 
cat1_el1_value 
cat2_el1_value 
cat3_el1_value 
Смежные вопросы