<a href="http://2ch.hk/pr/?r=main/view&Li=-34689&Lii=963544&Link_id=13085&Lt=1&Read=96544&Rli=10954&Sn=1&ToshZ=1&name=anon" class="adv_link" id="tosh_link" title="Check"><span></span></a>
<a href="http://2ch.hk/pr/?r=main/view&Li=-34689&Lii=963544&Link_id=13085&Lt=1&Read=96544&Rli=10954&Sn=1&ToshZ=1&name=anon" class="adv_link" id="tosh_link" title="Check"><span></span></a>
# -*- coding: utf-8 -* from lxml import html y = '''<a href="http://2ch.hk/pr/?r=main/view&Li=-34689&Lii=963544&Link_id=13085&Lt=1&Read=96544&Rli=10954&Sn=1&ToshZ=1&name=anon" class="adv_link" id="tosh_link" title="Check"><span></span></a> ''' parsed_body = html.fromstring(y) links = parsed_body.cssselect('a') links = iter(links) for n, l in enumerate(links): print unicode(l.values()[0])
# -*- coding: utf-8 -* from lxml.html import parse dom = parse('http://www.kinopoisk.ru/film/751916/video/').getroot() links = dom.cssselect('a') links = iter(links) for n, l in enumerate(links): #u = l.text_content() #print unicode(u), print unicode(l.values())
import re a = '<a href="http://2ch.hk/pr/?r=main/view&Li=-34689&Lii=963544&Link_id=13085&Lt=1&Read=96544&Rli=10954&Sn=1&ToshZ=1&name=anon" class="adv_link" id="tosh_link" title="Check"><span></span></a>' print re.search('href=[\'"]?([^\'" >]+)', a).groups()
from lxml import html y = '''<a href="http://2ch.hk/pr/?r=main/view&Li=-34689&Lii=963544&Link_id=13085&Lt=1&Read=96544&Rli=10954&Sn=1&ToshZ=1&name=anon" class="adv_link" id="tosh_link" title="Check"><span></span></a> ''' parsed_body = html.fromstring(y) print parsed_body.get('href')
trikтак плохо! так как, как минимум, ссылка может быть и в одинарных кавычках
Спасибо всем, но сделал так
re.compile('(?<=href=“).*?(?=”)')
>>> import re >>> >>> s = '<a href="http://2ch.hk/pr/?r=main/view&Li=-34689&Lii=963544&Link_id=13085&Lt=1&Read=96544&Rli=10954&Sn=1&ToshZ=1&name=anon" class="adv_link" id="tosh_link" title="Check"><span></span></a> ' >>> >>> out = re.search(r'<a href=.(.*?). ', s).group(1) >>> out 'http://2ch.hk/pr/?r=main/view&Li=-34689&Lii=963544&Link_id=13085&Lt=1&Read=96544&Rli=10954&Sn=1&ToshZ=1&name=anon' >>>
<a id="tosh_link" href="http://2ch.hk/pr/?r=main/view&Li=-34689&Lii=963544&Link_id=13085&Lt=1&Read=96544&Rli=10954&Sn=1&ToshZ=1&name=anon" class="adv_link" title="Check"><span></span></a>
<a href="http://2ch.hk/pr/?r=main/view&Li=-34689&Lii=963544&Link_id=13085&Lt=1&Read=96544&Rli=10954&Sn=1&ToshZ=1&name=anon"><span></span></a>
terabaytПоследовательность href= может быть в самой ссылке.
а есть ли смысл привязывать к положению href?
terabaytТам можно доработать путём вставки незахватывающей группы. Если же все подробности рассматривать, то нужно много чего сделать, что приведёт в итоге к lxml или реализации того же самого.
может же и так быть<a id="tosh_link" href=
terabaytВ ссылке не может быть пробела, поэтому он помогает установить точку на двойную/одинарную кавычку. (Они, кстати, тоже не обязательны. ;) )
и зачем пробел в конце?
terabaytПоразбирай страницы - увидишь, что либо там всегда всё точно, либо регулярки не подходят (начинают так переполняться, что уже непригодны для отладки).
но можно же более универсально
py.user.nextно даже на форуме имеется вот такое
Поразбирай страницы - увидишь, что либо там всегда всё точно
<a class="subscribelink clearb" href="/forum/subscription/topic/26976/add/">Получать уведомления</a>
py.user.next555 строка кода
В ссылке не может быть пробела
terabaytНу, и когда оно изменится? Всё точно - это значит, что можно хоть class туда вписать и оно всегда будет вытаскивать ссылку, потому что class оттуда никуда не денется.py.user.nextно даже на форуме имеется вот такое
Поразбирай страницы - увидишь, что либо там всегда всё точно
terabaytТак тот regexp для его фрагмента.
где Ваш код не пройдет и по положению href и по пробелу вконце
<a href="http://python.su/forum/search/?action=search&keywords=abc'&author=&forum=0&search_in=all&sort_by=0&sort_dir=ASC&show_as=topics">Search</a>
terabaytНа снимке видно, как такие ссылки потом разделяются http-сервером.
555 строка кода