Scrapy Xpath с текстом (), равным - PullRequest
0 голосов
/ 23 января 2019
    import scrapy
    example='<div class="ParamText"><span>OWNER APP</span></div>
<div class="ParamText"><span>OWNER</span></div>
<div class="ParamText"><span>OWNER NAME</span></div>'
    scrapy.Selector(text=example).xpath('//*[@class="ParamText"]/span[contains(text(),"OWNER")]').extract_first()

Здесь мне нужно очистить ВЛАДЕЛЬЦА только иногда 3 пролета. Я получу ВЛАДЕЛЬЦА

. Вывод:

Я получаю: ВЛАДЕЛЕЦ ПРИЛОЖЕНИЯ

Я хочу: ВЛАДЕЛЕЦ

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Вы можете выбрать по текстовому уравнению, например scrapy.Selector(text=txt).xpath('//*[@class="ParamText"]/span[text()="OWNER"]').get() или без подробностей, он даст вам первое: scrapy.Selector(text=txt).css('div.ParamText span').get()

0 голосов
/ 23 января 2019

Вы можете использовать регулярное выражение ^OWNER$ для сопоставления диапазонов, содержащих только OWNER.

Заменить contains(text(),"OWNER") на re:test(text(),"^OWNER$").

Преимущество регулярных выражений состоит в том, что вы также можете использовать пробелы (^\s*OWNER\s*$) или поддерживать разные регистры букв ((?i)^OWNER$).

0 голосов
/ 23 января 2019
scrapy.Selector(text=example).xpath('//*[@class="ParamText"]/span/text()').extract()[1]
...