Форум сайта python.su
0
Собираю ссылки.
При такой записи:
urls = lxml.html.fromstring(s) urls = urls.xpath('//a[not(re:match(@href, "(banned1|banned2)")) and starts-with(@href, "/") or starts-with(@href, ref) ]/@href', namespaces={"re": "http://exslt.org/regular-expressions"})
urls = lxml.html.fromstring(s) urls = urls.xpath('//a[not(re:match(@href, "(banned1|banned2)")) ]/@href', namespaces={"re": "http://exslt.org/regular-expressions"})
Офлайн
20
x and (y or z)
p.s. В “href” не обязательно должны быть домены, абсолютные или относительные пути (а ещё может быть “//example.com/…”). Так что лучше использовать вторую регулярку и `urlparse.urljoin` и/или `urlparse.urlsplit` в цикле.
..bw
Отредактировано bw (Ноя. 24, 2013 20:56:20)
Офлайн
1
or starts-with(@href, ref) ]/@href'
or starts-with(@href, "ref") ]/@href'
Отредактировано malya (Ноя. 25, 2013 08:49:21)
Офлайн
А есть ли смысл пихать эту сложную логику в XPATH? Я бы циклом пробежался по всем ссылкам и отфильтровал бы потом питоном нужные ссылки.
Офлайн