2014-01-10 3 views
0

Я использую python для веб-соскабливания. Все работало как масляный механизм, пока я не использовал его, чтобы получить описание продукта, которое на самом деле является простым описанием.Максимальная емкость модуля re? Python

Итак, это не работает вообще, как если бы мое регулярное выражение было неправильным. К сожалению, я не могу сказать, какой сайт я выскабливание, чтобы показать вам реальный пример, но я на самом деле знаю, что регулярное выражение на самом деле хорошо ... это что-то вроде этого:

descriptionRegex = 'id="this_id">(.*)</div>\s*<div\ id="another_id"' 

for found in re.findall(descriptionRegex, response) : 
    print found 

Дело в том, что (. *) похож на 25000+ символов

Есть ли ограничение символов для поиска re.findall()? Есть ли способ добиться этого?

+1

Пожалуйста, дайте нам пример, мы можем проверить. – Claudiu

+1

Я бы поспорил, у вас есть некоторые вложенные divs, которые ломают вещи ... почему бы вам не использовать что-то вроде прекрасного супа для такого рода вещей? это может быть случай, когда у вас есть молот (re) все выглядит как гвоздь ... –

+0

ok ... вот он: http://alfaome.ga/lipsum.txt – Alan

ответ

3

Необходимо указать re.DOTALL в своем обращении к .findall().

Если вы запустите эту программу, она будет вести себя, как вы запрашиваете:

import re 
response = '''id="this_id"> 
blah 
</div> <div id="another_id"''' 

descriptionRegex = r'id="this_id">(.*)</div>\s*<div\ id="another_id"' 

for found in re.findall(descriptionRegex, response, re.DOTALL) : 
    print found 
Смежные вопросы