Форум сайта python.su
В html есть такие строки:
<s class="test"><!--постоянно изменяющийся нужный текст--></s>
test = lxml.html.fromstring(html) test = text.xpath('//s@[class="test"]')
File "lxml.etree.pyx", line 1317, in lxml.etree._Element.xpath (src/lxml/lxml.etree.c:36891) File "xpath.pxi", line 290, in lxml.etree.XPathElementEvaluator.__call__ (src/lxml/lxml.etree.c:103188) File "xpath.pxi", line 212, in lxml.etree._XPathEvaluatorBase._handle_result (src/lxml/lxml.etree.c:102495) File "xpath.pxi", line 198, in lxml.etree._XPathEvaluatorBase._raise_eval_error (src/lxml/lxml.etree.c:102367) lxml.etree.XPathEvalError: Invalid expression
Офлайн
test = text.xpath('//s[@class="test"]')
Офлайн
Кстати, почему print выводит такую байду:
[<Element i at 18034c8>, <Element i at 1803530>, <Element i at 1803598>, <Element i at 1803600>, <Element i at 1803668>, <Element i at 18036d0>, <Element i at 1803738>, <Element i at 18037a0>, <Element i at 1803808>, <Element i at 1803870>, <Element i at 18038d8>, <Element i at 1803940>, <Element i at 18039a8>, <Element i at 1803a10>, <Element i at 1803a78>, <Element i at 1803ae0>, <Element i at 1803b48>, <Element i at 1803bb0>, <Element i at 1803c18>, <Element i at 1803c80>]
Офлайн
geliusКакой print?
Кстати, почему print выводит такую байду:
Офлайн
Когда я собираю ссылки так:
urls = lxml.html.fromstring(html) urls = urls.xpath(u'//img/ancestor::a[not(re:match(@href, "(slovo)")) ]/@href', namespaces={"re": "http://exslt.org/regular-expressions"}) print urls
test = lxml.html.fromstring(html) test = test.xpath('//s@[class="test"]') print test
[<Element s at 18034c8>, <Element s at 1803530>, <Element s at 1803598>, <Element s at 1803600>, <Element s at 1803668>, <Element s at 18036d0>, <Element s at 1803738>, <Element s at 18037a0>, <Element s at 1803808>, <Element s at 1803870>, <Element s at 18038d8>, <Element s at 1803940>, <Element s at 18039a8>, <Element s at 1803a10>, <Element s at 1803a78>, <Element s at 1803ae0>, <Element s at 1803b48>, <Element s at 1803bb0>, <Element s at 1803c18>, <Element s at 1803c80>]
Офлайн
geliusВыше bica написал, куда @ поставить.test = test.xpath('//s@[class="test"]')
test = test.xpath('//s[@class="test"]')
test = test.xpath('//s[@class="test"]/text()')
Офлайн