Форум сайта python.su
0
Помогите достать из этого только ссылку, пожалуйста. От регекспов уже мозги закипают
<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>
Офлайн
6
# -*- 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())
Отредактировано Kasta_neda (Апрель 25, 2015 21:47:41)
Офлайн
103
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')
Отредактировано terabayt (Апрель 25, 2015 22:32:28)
Офлайн
0
Спасибо всем, но сделал так
re.compile('(?<=href=“).*?(?=”)')
Офлайн
103
trikтак плохо! так как, как минимум, ссылка может быть и в одинарных кавычках
Спасибо всем, но сделал так
re.compile('(?<=href=“).*?(?=”)')
Офлайн
857
>>> 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' >>>
Офлайн
103
py.user.next а есть ли смысл привязывать к положению href? может же и так быть
<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>
Офлайн
857
terabaytПоследовательность href= может быть в самой ссылке.
а есть ли смысл привязывать к положению href?
terabaytТам можно доработать путём вставки незахватывающей группы. Если же все подробности рассматривать, то нужно много чего сделать, что приведёт в итоге к lxml или реализации того же самого.
может же и так быть<a id="tosh_link" href=
terabaytВ ссылке не может быть пробела, поэтому он помогает установить точку на двойную/одинарную кавычку. (Они, кстати, тоже не обязательны. ;) )
и зачем пробел в конце?
terabaytПоразбирай страницы - увидишь, что либо там всегда всё точно, либо регулярки не подходят (начинают так переполняться, что уже непригодны для отладки).
но можно же более универсально
Отредактировано py.user.next (Апрель 26, 2015 01:02:37)
Офлайн
103
py.user.nextно даже на форуме имеется вот такое
Поразбирай страницы - увидишь, что либо там всегда всё точно
<a class="subscribelink clearb" href="/forum/subscription/topic/26976/add/">Получать уведомления</a>
py.user.next555 строка кода
В ссылке не может быть пробела
Офлайн
857
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 строка кода
Отредактировано py.user.next (Апрель 26, 2015 03:32:24)
Прикреплённый файлы:
uri.png (144,6 KБ)
Офлайн