Уведомления

Группа в Telegram: @pythonsu

#1 Март 6, 2009 00:40:11

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

re.findall, спарсить сайт

есть страничка - http://www.job.ru/topmanagers/
на ней список подразделов - единственный мультиселект
пытаюсь вычленить названия разделов средствами питона

вопрос как вычленить то что в теге:
<select multiple=“multiple” name=“jobSpecializations” id=“jobSpecializations” class=“w300” size=“6”>

</select>

делаю так:

        import urllib2
import re
req = urllib2.Request("http://www.job.ru/topmanagers/", None, {'User-agent': 'Mozilla/5.0'})
page = urllib2.urlopen(req).read()
#print page

sr = re.findall(r'<select multiple="multiple".*>(.*)</select>',page, re.DOTALL|re.MULTILINE)
print sr
но получаю какой-то странный результат - вместо ожидаемого фрагмента с <options>
подскажите где ошибаюсь?



Отредактировано (Март 6, 2009 00:42:39)

Офлайн

#2 Март 6, 2009 04:53:46

bobry
От:
Зарегистрирован: 2008-08-03
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

re.findall, спарсить сайт

re.findall(r'<select multiple="multiple"[^>]*?>(.+)</')



Отредактировано (Март 6, 2009 04:55:10)

Офлайн

#3 Март 6, 2009 15:35:02

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

re.findall, спарсить сайт

Ваш пример вытягивает немного больше - до 2-го селекта.
Седня открыл для себя что есть такое понятие как ‘жадное\не жадное’ оказывается все было из-за этого, пришел к такому:

sr = re.findall(r'<select multiple="multiple".*?>(.+?)</select>',page, re.DOTALL|re.MULTILINE)



Отредактировано (Март 6, 2009 15:52:57)

Офлайн

#4 Март 6, 2009 16:06:09

bobry
От:
Зарегистрирован: 2008-08-03
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

re.findall, спарсить сайт

да, просто проверялось для одного)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version