Python регулярное выражение в ответе scrapy или элементе, которое может удалить все, что находится между двумя строками - PullRequest
0 голосов
/ 27 мая 2020

Я просматриваю сайт, и элемент, который мне нужен, не имеет текстового значения.

Чтобы получить значение, которое я ищу в какой-то форме или форме, мне нужно извлечь значение между arrowTo(foo)-

Я хочу удалить все и оставить foo

Значение, которое я извлекаю, представляет собой весь div, используя этот

financials['arrow_value']  = response.xpath("//div[@class='dot-aqQgEO_r']/following-sibling::div[1]").extract_first()

Как мне элегантно сделать это с помощью scrapy или регулярное выражение?

[
{"arrow_value": "<div class=\"arrow-F-uE7IX8 arrowToBuy-1R7d8UMJ arrowBuyShudder-3GMCnG5u\"> 
<div class=\"arrowMain-4Z6WqtKf\"></div><div class=\"arrowHidden-chDYo-JT\"></div></div>"} 

{"arrow_value": "<div class=\"arrow-F-uE7IX8 arrowToBuy-1R7d8UMJ arrowBuyShudder-3GMCnG5u\"> 
<div class=\"arrowMain-4Z6WqtKf\"></div><div class=\"arrowHidden-chDYo-JT\"></div></div>"} 

{"arrow_value": "<div class=\"arrow-F-uE7IX8 arrowToSell-2niuhIkD arrowSellShudder- 
mudaBhtR\"><div class=\"arrowMain-4Z6WqtKf\"></div><div class=\"arrowHidden-chDYo-JT\"</div> 
</div>"}
]

1 Ответ

1 голос
/ 27 мая 2020

с использованием регулярного выражения, \w+ захватывает любой символ слова, пока не будет достигнуто -.

arrow_value = "<div class=\"arrow-F-uE7IX8 arrowToBuy-1R7d8UMJ arrowBuyShudder-3GMCnG5u\">" \
              "<div class=\"arrowMain-4Z6WqtKf\"></div><div class=\"arrowHidden-chDYo-JT\"></div></div>"

print(re.findall("arrowTo(\w+)-", arrow_value))

выводит,

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