Найти - Пользователи
Полная версия: Найти подстроку в строке html кода
Начало » Центр помощи » Найти подстроку в строке html кода
1 2 3
Андрей Светлов
Zubchick, <title> можно писать любым регистром - и это допускается.
AlexAV
Андрей Светлов
Просмотр кода показал, что разбор XML делается через регулярки. Которые - кривоватые.



Мораль: если работаете со структурированным текстом - используйте библиотеки, предназначенные для обрабатываемого формата.
Иначе довольно легко можно поймать неожиданное. Чем больше у вашей поделки пользователей - тем выше шанс споткнуться.
xml разбирать через регулярки действительно странно. Но некоторые 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 не будет сильно уступать регулярке в скорости.
Dit81
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.
o7412369815963
>>> data = '<html><Title>{?TITLE?}</title><body>{?TITLE?}</body></html>'
>>> re.findall(r'<Title>(.*?)</title>',data,re.I)
['{?TITLE?}']
lepriconl
Люди добрые!!!! помогите!!! спасите жизнь человека!!! вешаюсь! Ситуация очень похожая, но…. у меня страница имеет такой вид:
<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
если бы все было в одну строчку, то нет проблем, а так он не хочет находить….. помогите!!!
PooH
r1 = re.compile(r'<p>(.*?)</p>',  re.DOTALL).findall(http)
Андрей Светлов
И все же разгребать регулярками html - не комильфо
lepriconl
Спасибо огромное!!! а еще такой вопрос… ситуация как бы таже самая, но немного другая:

Люди добрые!!!! помогите!!! спасите жизнь человека!!! вешаюсь! Ситуация очень похожая, но…. у меня страница имеет такой вид:
<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
Андрей Светлов
Да вешайтесь уже, что ли…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB