#python #selenium #innerhtml
Вопрос:
Во-первых, я новичок в работе с Python, особенно с Selenium. Поэтому я подключился к странице с помощью webdriver, а также уже взял нужный мне файл innerHTML. Вот моя проблема, innerHTML-это «список», и я хочу вывести только одно значение. Это выглядит примерно так:
<html>
<body>
<pre style="example" xpath="1">
"amount": 12{
"value" : 3
},
</pre>
</body>
</html>
^Это просто для иллюстрации, потому что на самом деле все намного длиннее. innerHTML выглядит так:
"amount": 12{
"value" : 3
},
^Вот где я сейчас нахожусь. Я не могу указать строку, потому что страница не статична. Как заставить python находить «значение» из переменной в innerHTML ? Пожалуйста, обратите внимание, что после «значение»стоит двоеточие!
Заранее большое вам спасибо!
Ответ №1:
Я предлагаю использовать регулярное выражение для поиска значения. Я предполагаю, что вам нужна только числовая часть, поэтому вот код:
innerHTML = '''
"amount": 12{
"value" : 3
},"value":4
'value': 5
'''
import re
regex = re.compile(r'''("|')value("|')s*:s*(?P<number>d )''')
startpos = 0
m = None
while 1:
m = regex.search(innerHTML, startpos)
if m is None: break
print(m.group("number"))
startpos = m.start() 1
# output:
# 3
# 4
# 5
Это выведет все найденные значения в виде строк. Например, впоследствии вы можете преобразовать их в целые числа.
ПРИМЕЧАНИЕ: Мой код также учитывает случай value
, когда он окружен одинарными кавычками '
, а не двойными кавычками "
. Это для вашего удобства; если нет, вы можете изменить соответствующую строку выше на:
regex = re.compile(r'''"value"s*:s*(?P<number>d )''')
В этом случае выходные данные не будут включать значение 5
.