Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Парсинг html регулярными выражениями [RSS Feed]

#1 Май 29, 2009 16:56:13

Newbie
От:
Зарегистрирован: 2009-03-02
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг html регулярными выражениями

Файл 1:

import urllib     

hdl = urllib.urlopen("file://localhost/D:/page.htm")
html = hdl.read()
hdl.close()

text_file = open("file.txt", "w")
text_file.write(html)
text_file.close()
Файл 2:
import re

text_file = open("file.txt", "r")
contents = text_file.read()
text_file.close()

p = re.compile('(?<=starting_html_tag).*(?=ending_html_tag)')
m = p.search(contents)
if m:
print 'Match found: ', m.group()
else:
print 'No match'
Первым скриптом открываем веб-страницу и записываем все содержимое страницы в файл file.txt. Вторым скриптом открываем файл file.txt и ищем содержимое между тегами starting_html_tag и ending_html_tag, которые (!) там имееются и они уникальны.

Проблема: No match! Почему не хочет искать инфу между указанными тегами? Хах… Я сказал не хочет, потому что вот какая штука:

только что созданный файл file.txt выглядит так:
<div id="gDheader-wrap">
<div id="gDheader">
<div id="gDlogo">
<h1><a href="http://... и так далее...
стоит мне его как-либо пересохранить (уже вручную - через файл > сохранить как), так он во-первых в размере теряет пару кб, а во-вторых содержание его становится следущего вида:
<div id="gDheader-wrap"><div id="gDheader">    <div id="gDlogo">      <h1><a href="http://... и тому подобное...
Так вот: скрипт №2 прекрасно работает с “пересохраненным” файлом. Я полагаю, возможно, вся загвозка в кодировке? Или нет?
На PHP у меня имеется подобный скрипт; так я там полученную веб-страницу сперва кодирую, прежде чем использовать рексы:
$contents = file_get_contents("http://somewebsite.com");

$contents = urlencode($contents);

$pattern = '/(?<=starting_html_tag).*(?=ending_html_tag)/';

preg_match($pattern, $contents, $matches);
Подскажите, пожалуйста, как решить проблему…



Офлайн

#2 Июль 31, 2009 22:12:35

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг html регулярными выражениями

привет,
ты свои вопросы решил? или забросил?



Офлайн

#3 Фев. 22, 2010 14:44:10

Deyteriy
От:
Зарегистрирован: 2010-02-22
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг html регулярными выражениями

К re.compile нужно вторым аргументов поставить MULTILINE, тогда, думаю, всё заработает



Офлайн

#4 Фев. 22, 2010 17:10:45

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

Парсинг html регулярными выражениями

Офлайн

  • Начало
  • » Web
  • » Парсинг html регулярными выражениями[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version