Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 10, 2010 17:42:35

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Найти подстроку в строке html кода

Zubchick, <title> можно писать любым регистром - и это допускается.



Офлайн

#2 Дек. 10, 2010 21:20:31

AlexAV
От:
Зарегистрирован: 2010-08-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти подстроку в строке html кода

Андрей Светлов
Просмотр кода показал, что разбор XML делается через регулярки. Которые - кривоватые.



Мораль: если работаете со структурированным текстом - используйте библиотеки, предназначенные для обрабатываемого формата.
Иначе довольно легко можно поймать неожиданное. Чем больше у вашей поделки пользователей - тем выше шанс споткнуться.
xml разбирать через регулярки действительно странно. Но некоторые html страницы, ИМХО, никак не тянут на “структурированный текст”.



Офлайн

#3 Дек. 13, 2010 12:20:51

Virtuos86
От:
Зарегистрирован: 2010-11-17
Сообщения: 33
Репутация: +  1  -
Профиль   Отправить e-mail  

Найти подстроку в строке html кода

Мне показалось, или полный ответ так и не был приведен?

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)
При простом поиске подстроки find не будет сильно уступать регулярке в скорости.



Офлайн

#4 Дек. 13, 2010 12:59:07

Dit81
От:
Зарегистрирован: 2010-12-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти подстроку в строке html кода

Virtuos86
Мне показалось, или полный ответ так и не был приведен?
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)
При простом поиске подстроки find не будет сильно уступать регулярке в скорости.
Полного ответа не было, но я уже делаю через find… За приведенный код огромное спасибо!!! Так как только изучаю python.



Офлайн

#5 Дек. 16, 2010 08:20:33

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Найти подстроку в строке html кода

>>> data = '<html><Title>{?TITLE?}</title><body>{?TITLE?}</body></html>'
>>> re.findall(r'<Title>(.*?)</title>',data,re.I)
['{?TITLE?}']

Офлайн

#6 Фев. 16, 2011 17:14:16

lepriconl
От:
Зарегистрирован: 2007-09-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти подстроку в строке html кода

Люди добрые!!!! помогите!!! спасите жизнь человека!!! вешаюсь! Ситуация очень похожая, но…. у меня страница имеет такой вид:
<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
если бы все было в одну строчку, то нет проблем, а так он не хочет находить….. помогите!!!



Офлайн

#7 Фев. 16, 2011 19:44:19

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Найти подстроку в строке html кода

r1 = re.compile(r'<p>(.*?)</p>',  re.DOTALL).findall(http)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Фев. 16, 2011 19:47:48)

Офлайн

#8 Фев. 16, 2011 19:46:44

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Найти подстроку в строке html кода

И все же разгребать регулярками html - не комильфо



Офлайн

#9 Фев. 17, 2011 11:15:34

lepriconl
От:
Зарегистрирован: 2007-09-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Найти подстроку в строке html кода

Спасибо огромное!!! а еще такой вопрос… ситуация как бы таже самая, но немного другая:

Люди добрые!!!! помогите!!! спасите жизнь человека!!! вешаюсь! Ситуация очень похожая, но…. у меня страница имеет такой вид:
<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



Офлайн

#10 Фев. 17, 2011 11:30:25

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Найти подстроку в строке html кода

Да вешайтесь уже, что ли…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version