Форум сайта python.su
14
Zubchick, <title> можно писать любым регистром - и это допускается.
Офлайн
0
Андрей Светловxml разбирать через регулярки действительно странно. Но некоторые html страницы, ИМХО, никак не тянут на “структурированный текст”.
Просмотр кода показал, что разбор XML делается через регулярки. Которые - кривоватые.
…
Мораль: если работаете со структурированным текстом - используйте библиотеки, предназначенные для обрабатываемого формата.
Иначе довольно легко можно поймать неожиданное. Чем больше у вашей поделки пользователей - тем выше шанс споткнуться.
Офлайн
1
Мне показалось, или полный ответ так и не был приведен?
data = '<html><title>{?TITLE?}</title><body>{?TITLE?}</body></html>'
title = '{?TITLE?}'
def findall(string, substring):
length = len(substring)
result = []
temp = start = 0
while True:
temp = data.find(title, start)
if temp == -1: break
result.append(temp)
start = temp length
return result
print findall(data, title)Офлайн
0
Virtuos86Полного ответа не было, но я уже делаю через find… За приведенный код огромное спасибо!!! Так как только изучаю python.
Мне показалось, или полный ответ так и не был приведен?При простом поиске подстроки find не будет сильно уступать регулярке в скорости.data = '<html><title>{?TITLE?}</title><body>{?TITLE?}</body></html>'
title = '{?TITLE?}'
def findall(string, substring):
length = len(substring)
result = []
temp = start = 0
while True:
temp = data.find(title, start)
if temp == -1: break
result.append(temp)
start = temp length
return result
print findall(data, title)
Офлайн
32
>>> data = '<html><Title>{?TITLE?}</title><body>{?TITLE?}</body></html>'
>>> re.findall(r'<Title>(.*?)</title>',data,re.I)
['{?TITLE?}']Офлайн
0
Люди добрые!!!! помогите!!! спасите жизнь человека!!! вешаюсь! Ситуация очень похожая, но…. у меня страница имеет такой вид:
<html>
<title>
title
</title>
<body>
body
</body>
<p>
test
</p>
</html>
как мне найти test? я перепробовал сто вариантов… но ничего не выходит… вот на чем я остановился…
http = Get('http://moovie.ru/film/the_tourist')
r1 = re.compile(r'<p>(.*?)</p>').findall(http)
for rCLS in r1:
print rCLS
если бы все было в одну строчку, то нет проблем, а так он не хочет находить….. помогите!!!
Офлайн
72
r1 = re.compile(r'<p>(.*?)</p>', re.DOTALL).findall(http)
Отредактировано (Фев. 16, 2011 19:47:48)
Офлайн
14
И все же разгребать регулярками html - не комильфо
Офлайн
0
Спасибо огромное!!! а еще такой вопрос… ситуация как бы таже самая, но немного другая:
Люди добрые!!!! помогите!!! спасите жизнь человека!!! вешаюсь! Ситуация очень похожая, но…. у меня страница имеет такой вид:
<html>
<title>
title
</title>
<body>
body
</body>
<p>
test
</p>
Год: <b>2010</b><br/>
Жанр: <b>Боевик</b><br/>
</html>
как мне найти именно год?
http = Get('http://moovie.ru/film/the_tourist')
r1 = re.compile(r'Год: <b>(.*?)</b><br/>', re.DOTALL).findall(http)
for rCLS in r1:
print rCLS
Офлайн
14
Да вешайтесь уже, что ли…
Офлайн