Я выбрал элемент на странице, на которой есть ссылки, которые я хочу на страницы. Они вроде как <a href="blah">1</a>
. Я хочу использовать регулярное выражение с xpath, чтобы я мог получить все ссылки, подобные этому, текст которого \d+
.
Я вижу, есть ответ на него здесь:. Как использовать регулярные выражения в LXML XPath, но я не могу понять из негор >
Более конкретно, "Обратите внимание, что вам необходимо предоставить отображение пространства имен, так что он знает, что„повторно“префикс в выражении XPath стоит."
Здесь код со страницы очищен: <div class="pagination"> <b>1</b> <a href="?page=post&s=list&tags=tag2+tag1&pid=25">2</a><a href="?page=post&s=list&tags=tag2+tag1&pid=50">3</a><a href="?page=post&s=list&tags=tag2+tag1&pid=75">4</a><a href="?page=post&s=list&tags=tag2+tag1&pid=100">5</a><a href="?page=post&s=list&tags=tag2+tag1&pid=125">6</a><a href="?page=post&s=list&tags=tag2+tag1&pid=150">7</a><a href="?page=post&s=list&tags=tag2+tag1&pid=175">8</a><a href="?page=post&s=list&tags=tag2+tag1&pid=200">9</a><a href="?page=post&s=list&tags=tag2+tag1&pid=225">10</a><a href="?page=post&s=list&tags=tag2+tag1&pid=250">11</a><a href="?page=post&s=list&tags=tag2+tag1&pid=25" alt="next">›</a><a href="?page=post&s=list&tags=tag2+tag1&pid=325" alt="last page">»</a><br><br><br><br><iframe hspace="0" vspace="0" border="0" marginheight="0" marginwidth="0" allowtransparency="true" src="http://notrelevant.com" frameborder="0" height="98" scrolling="no" width="736"></iframe></div>
Мой код:
answer = browser.open(address)
tree = lxml.html.parse(answer)
numbers = tree.xpath("//div[contains(@class, 'pagination')]")[0]
XPath не предоставляет средства для соответствия регулярному выражению.
Расширение, используемое в сообщении, на которое вы ссылаетесь, должно позволять работать следующим образом:
//div[contains(@class, 'pagination')]/a[re:match(text(), '^\d+$')]
Вам не нужно RegExp для этого выражения XPath:
//div[
contains(
concat(' ',@class,' '),
' pagination '
)
]/a[
floor()=.
]