Как получить произвольное значение в команде xpath для очистки веб-страниц с помощью Python Scrapy - PullRequest
0 голосов
/ 21 декабря 2018

Как я могу определить команду xpath в python (scrapy) для принятия любого числа в месте, указанном в коде.Я уже пытался поставить * или any() на позицию.

table = response.xpath('//*[@id="olnof_**here I want to accept any value**_altlinesodd"]/tr[1]/TD[1]/A[1]')

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Вы можете сделать это используя регулярные выражения :

table = response.xpath('//*[re:test(@id, "^olnof_.+_altlinesodd$")]/tr[1]/TD[1]/A[1]')
0 голосов
/ 26 декабря 2018

Теперь предположим, что вы любой, как ЛЮБОЙ, так что вы можете попробовать это.x_path = '//*[@id="olnof_{}_altlinesodd"]/tr[1]/TD[1]/A[1]' x_path.format("put your any here, may b from rand function or extracting the value from somewhere else.") Тогда table = response.xpath(x_path) это сделает работу.

0 голосов
/ 21 декабря 2018

Вы можете попробовать использовать обходной путь ниже:

'//*[starts-with(@id, "olnof_") and contains(@id, "_altlinesodd")]/tr[1]/TD[1]/A[1]'

ends-with(@id, "_altlinesodd") подходит лучше в этом случае, но Scrapy не поддерживает синтаксис ends-with, поэтому contains используется вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...