Найти - Пользователи
Полная версия: помогите с xpath
Начало » Python для новичков » помогите с xpath
1
gelius
Собираю ссылки.
При такой записи:
        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"})
отрабатывают.
Но мне нужны только ссылки с домена в переменной “ref”
bw
x and (y or z)

p.s. В “href” не обязательно должны быть домены, абсолютные или относительные пути (а ещё может быть “//example.com/…”). Так что лучше использовать вторую регулярку и `urlparse.urljoin` и/или `urlparse.urlsplit` в цикле.

..bw
malya
or starts-with(@href, ref) ]/@href'

а здесь у Вас случаем не ошибка?

or starts-with(@href, "ref") ]/@href'
lorien
А есть ли смысл пихать эту сложную логику в XPATH? Я бы циклом пробежался по всем ссылкам и отфильтровал бы потом питоном нужные ссылки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB