Форум сайта python.su
0
Есть такая структура html
<h2>Instructions</h2> <ul> <li style="font-size: 14px;"> </li> <li style="font-size: 14px;">1 </li> <li style="font-size: 14px;">2</li> </ul> <h2>Information</h2> <p style="font-size: 14px;">123</p> <h2>Requirements</h2> <p style="font-size: 14px;"></p>
Офлайн
103
зачем вам BeautifulSoup?!
import lxml.html s = """<h2>Instructions</h2> <ul> <li style="font-size: 14px;"> </li> <li style="font-size: 14px;">1 </li> <li style="font-size: 14px;">2</li> </ul> <h2>Information</h2> <p style="font-size: 14px;">123</p> <h2>Requirements</h2> <p style="font-size: 14px;"></p>""" r = '' p = lxml.html.fromstring(s) for i in p.xpath("//h2"): n = i.getnext() if n.tag == 'ul': r += '\n'.join(j.text.strip() for j in n.getchildren() if j.text) elif n.tag == 'p' and n.text: r += n.text print r
Офлайн
0
А как проверить существует ли таблицы и в каком количистве ?
Офлайн
103
import lxml.html s = """ <table> <tr><td> <h2>Instructions</h2> <ul> <li style="font-size: 14px;"> </li> <li style="font-size: 14px;">1 </li> <li style="font-size: 14px;">2</li> </ul> <h2>Information</h2> <p style="font-size: 14px;">123</p> <h2>Requirements</h2> <p style="font-size: 14px;"></p> </td></tr></table> """ r = '' p = lxml.html.fromstring(s) print len(p.xpath('//table'))
Офлайн
0
Спасибо за ответы,есть одна загвоздка в предыдущих примерах структура была явная, а как быть если часть структуры явная но бывают иногда маленькие исключения ? Вот например
<p><strong>West Berkshire Station</strong></p> <p><strong>Phone: </strong>(802) 933-4337</p> <p><strong>Fax: </strong>None</p> <p><strong>Operational Hours: </strong>12:00 PM-12:00 PM (Eastern)<br/>Seven Days A Week (7)</p> <p> </p> <p></p> <p><strong>Pinnacle Road Station</strong></p> <p><strong>Phone: </strong>(802) 848-7721</p> <p><strong>Fax: </strong>None</p> <p><strong>Operational Hours: </strong>12:00 PM-12:00 PM (Eastern)<br/>Seven Days A Week (7)</p> <p> </p> <p></p> <p><strong>East Richford Station</strong></p> <p><strong>Phone: </strong>(802) 848-7746</p> <p><strong>Fax: </strong>None</p> <p><strong>Operational Hours: </strong>12:00 PM-12:00 PM (Eastern)<br/>Seven Days A Week (7)</p> <p> </p> <p></p>
Офлайн
103
а где в примере таблицы?
таблица это <table>
что вы хотите получить на выходе и что у вас не получается?
Офлайн
0
Ну в данном примере псевдо таблица представлена тегами strong , нужно распарсить структуру показанную выше, каждая таблица должна выглядеть вот так
[{'East Richford Station':[{'Phone:':'(802) 848-7746'},{'Fax:':'None'}]}]
Офлайн
103
ну за начало таблички можно использовать
<p> </p>
Jeck290тогда это не важно
И еще такое бывает что в таких таблицах бывает табличка не с тремя строками а с четырмя как в таком случае поступать ?
Офлайн
857
Jeck290По идее, одна запись должна выглядеть как один словарь.
должна выглядеть вот так
d = {'name': 'East Richford Station', 'phone': '(802) 848-7746', 'fax': None, 'optime': '12:00 PM-12:00 PM (Eastern) Seven Days A Week (7)'}
Офлайн
0
да спасибо вроде разобрался.
Офлайн