Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 16, 2011 19:19:14

se111!
От:
Зарегистрирован: 2011-05-03
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

rex в grab - проблема

g = Grab()
g.go('http://domain.com/')
print g.search_rex(re.compile("/(Set:|document=['\"])(.*?)(path*?)/i", g.response.body)).group(1)
В результате:
  File "/usr/lib/python2.6/re.py", line 190, in compile
return _compile(pattern, flags)
File "/usr/lib/python2.6/re.py", line 243, in _compile
p = sre_compile.compile(pattern, flags)
File "/usr/lib/python2.6/sre_compile.py", line 506, in compile
p = sre_parse.parse(p, flags)
File "/usr/lib/python2.6/sre_parse.py", line 679, in parse
p = _parse_sub(source, pattern, 0)
File "/usr/lib/python2.6/sre_parse.py", line 314, in _parse_sub
itemsappend(_parse(source, state))
File "/usr/lib/python2.6/sre_parse.py", line 407, in _parse
if state.flags & SRE_FLAG_VERBOSE:
TypeError: unsupported operand type(s) for &: 'str' and 'int'
Где косяк?



Офлайн

#2 Дек. 27, 2011 06:36:18

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

rex в grab - проблема

Вы скобки попутали.

У вас так:

g.search_rex(re.compile("/(Set:|document=['\"])(.*?)(path*?)/i", g.response.body)).group(1)
а надо так:
g.search_rex(re.compile("/(Set:|document=['\"])(.*?)(path*?)/i"), g.response.body).group(1)
Что вообще за re.compile('/…/i') - вы с PHP что ли? Python не поддерживает такой синтаксис, флаги надо передавать вторым аргументом функции compile. Читайте документацию.

Кстати функция search_rex в Grab устарела, рекомендуется использовать функции rex и rext_text

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version