Форум сайта python.su
doza_andПеределал, строку поиска, но все равно ничего не найдено ((
У меня не уходит. Правда ваша строка долго качается всетаки 150 килобайт.
python 2.6
вашим желаниям больше соответствует:res=re.search(frase1+r"(.+)"+frase2,some,re.S)
print (res.group(1))
Офлайн
Вот текст дословно
import urllib, urllib2, re
url = 'http://all.auto.ru/list/?category_id=15§ion_id=1&subscribe_id=&filter_id=&submit=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8&mark_id=0&year%5B1%5D=&year%5B2%5D=&color_id=&price_usd%5B1%5D=&price_usd%5B2%5D=¤cy_key=RUR&body_key=&run%5B1%5D=&run%5B2%5D=&engine_key=0&engine_volume%5B1%5D=&engine_volume%5B2%5D=&drive_key=&engine_power%5B1%5D=&engine_power%5B2%5D=&transmission_key=0&used_key=&wheel_key=&custom_key=&available_key=&change_key=&owner_pts=&stime=0&country_id=1&has_photo=0®ion%5B%5D=89®ion_id=89&sort_by=2&city_id=&output_format=1&client_id=0&extras%5B1%5D=0&extras%5B2%5D=0&extras%5B3%5D=0&extras%5B4%5D=0&extras%5B5%5D=0&extras%5B6%5D=0&extras%5B7%5D=&extras%5B8%5D=0&extras%5B9%5D=0&extras%5B10%5D=0&extras%5B11%5D=0&extras%5B12%5D=&extras%5B13%5D=0&extras%5B14%5D=0&extras%5B15%5D=0&extras%5B16%5D=0&extras%5B17%5D=0&extras%5B18%5D=&extras%5B19%5D=&extras%5B20%5D=&extras%5B21%5D=&extras%5B22%5D=&extras%5B23%5D=0&extras%5B24%5D=0&extras%5B25%5D=&extras%5B26%5D=&extras%5B27%5D=0&extras%5B28%5D=0&extras%5B29%5D=&_p=1'
headers = {'User-Agent':'Mozilla/5.0 (compatible; MSIE 6.1; WindowsNT)'}
req = urllib2.Request(url,None, headers)
some = urllib2.urlopen(req).read()
frase1='<td align=left style=width:30%><a href="'
frase2='" class="offer-list">'
res=re.search(frase1+r"(.+)"+frase2,some,re.S)
print (res.group(1))
Офлайн
Но к сожалению не ту что стоит между frase1 и frase2
Офлайн
Эврика )))
Следующий код возвращает искомую строку, но только одну первую из 50 ((
import urllib, urllib2, re
url = 'http://all.auto.ru/list/?category_id=15§ion_id=1&subscribe_id=&filter_id=&submit=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8&mark_id=0&year%5B1%5D=&year%5B2%5D=&color_id=&price_usd%5B1%5D=&price_usd%5B2%5D=¤cy_key=RUR&body_key=&run%5B1%5D=&run%5B2%5D=&engine_key=0&engine_volume%5B1%5D=&engine_volume%5B2%5D=&drive_key=&engine_power%5B1%5D=&engine_power%5B2%5D=&transmission_key=0&used_key=&wheel_key=&custom_key=&available_key=&change_key=&owner_pts=&stime=0&country_id=1&has_photo=0®ion%5B%5D=89®ion_id=89&sort_by=2&city_id=&output_format=1&client_id=0&extras%5B1%5D=0&extras%5B2%5D=0&extras%5B3%5D=0&extras%5B4%5D=0&extras%5B5%5D=0&extras%5B6%5D=0&extras%5B7%5D=&extras%5B8%5D=0&extras%5B9%5D=0&extras%5B10%5D=0&extras%5B11%5D=0&extras%5B12%5D=&extras%5B13%5D=0&extras%5B14%5D=0&extras%5B15%5D=0&extras%5B16%5D=0&extras%5B17%5D=0&extras%5B18%5D=&extras%5B19%5D=&extras%5B20%5D=&extras%5B21%5D=&extras%5B22%5D=&extras%5B23%5D=0&extras%5B24%5D=0&extras%5B25%5D=&extras%5B26%5D=&extras%5B27%5D=0&extras%5B28%5D=0&extras%5B29%5D=&_p=1'
headers = {'User-Agent':'Mozilla/5.0 (compatible; MSIE 6.1; WindowsNT)'}
req = urllib2.Request(url,None, headers)
some = urllib2.urlopen(req).read()
frase1='<td align=left style=width:30%><a href="'
frase2='" class="offer-list">'
res=re.search(frase1+r"(.+?)"+frase2,some,re.S)
print (res.group(1))
Офлайн
anufrikanecЭто потому что findall возвращает список найденных совпадений, его надо примерно так обрабатывать:
при попытке использовать вместо re.search = re.findall, выдает следующую ошибку:
Traceback (most recent call last):
File “C:/avtoru/test2.py”, line 9, in <module>
print (res.group(1))
AttributeError: ‘list’ object has no attribute ‘group’
for res in re.findall(frase1+r"(.+?)"+frase2,some,re.S):
print (res.group(1))
Офлайн
PooHРешить за пару минут, заглянув в документацию - это конечно да, но при наличие опыта, когда его нет и даже не знаешь, что конкретно надо искать в документации и как называется то что ищешь - проблемнее найти искомое за пару минут. Да еще с учетом что книг по питону конечно много, но сведенья и предпологаемые методы решения каких-то задачь могут отличаться координально.anufrikanecЭто потому что findall возвращает список найденных совпадений, его надо примерно так обрабатывать:
при попытке использовать вместо re.search = re.findall, выдает следующую ошибку:
Traceback (most recent call last):
File “C:/avtoru/test2.py”, line 9, in <module>
print (res.group(1))
AttributeError: ‘list’ object has no attribute ‘group’PS: вот никогда понять не мог, в чем прикол задавать такие вопросы на форуме, почти день ждать ответа, когда все можно решить за пару минут заглянув в документацию?for res in re.findall(frase1+r"(.+?)"+frase2,some,re.S):
print (res.group(1))
Офлайн
Подскажите пожалуйста, в чем может быть проблемма:
>>> a='<title>Продажа легковые автомобили подержанные ВАЗ 21061 </title>'
>>> marka1='<title>'
>>> marka2='</title>'
>>> res=re.search(marka1+r“(.+)”+marka2,a,re.S)
>>> print res
<_sre.SRE_Match object at 0x01EF51E0>
Отредактировано (Апрель 19, 2011 14:19:23)
Офлайн
Что-то типо такого:
import StringIO
import html5lib
import lxml
import lxml.html
def ParserLinks(html_text):
""" Парсер ссылок на странице """
# Создаем объект для парсинга
parser = html5lib.HTMLParser(tree=html5lib.treebuilders.getTreeBuilder("lxml"))
doc_tree = parser.parse(StringIO.StringIO(html_text))
find_lnk = lxml.etree.XPath(".//html:a", namespaces={"html":"http://www.w3.org/1999/xhtml"})
# Распарсиваем
lnk_list = []
for node in find_lnk(doc_tree):
href = node.get("href")
if href == None:
continue
lnk_list.append(href)
return lnk_list
Офлайн
Psixoизвините,а можете откомментировать строки,для лучшего понимания и усвоения?
Что-то типо такого:
Код:
import StringIO
import html5lib
import lxml
import lxml.html
def ParserLinks(html_text):
“”“ Парсер ссылок на странице ”“”
# Создаем объект для парсинга
parser = html5lib.HTMLParser(tree=html5lib.treebuilders.getTreeBuilder(“lxml”))
doc_tree = parser.parse(StringIO.StringIO(html_text))
find_lnk = lxml.etree.XPath(“.//html:a”, namespaces={“html”:"http://www.w3.org/1999/xhtml"})
# Распарсиваем
lnk_list =
for node in find_lnk(doc_tree):
href = node.get(“href”)
if href == None:
continue
lnk_list.append(href)
return lnk_list
Офлайн