requests возвращает код, но токен там пустой

У меня есть такой код:

import requests

header = {'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"}
    
r = requests.get("https://santehnika1.ru/personal/", headers=header)
print("Done!")
print(r.text)

В r.text он мне возвращает код страницы, но токен там пустой. Однако, если самому зайти на сайт, то токен будет, то есть это выглядит вот так:

<input type="hidden" id="token_check" name="token_check" value="" />

а должно:

<input type="hidden" id="token_check" name="token_check" value="50022" />

вот сайт: https://santehnika1.ru
Что я делаю не так?


Ответы (2 шт):

Автор решения: Jack_oS
import requests


url = 'https://santehnika1.ru/personal/'
header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36'}

r = requests.get(url, headers=header)

a = r.text.find("token_check').val('")
b = r.text.find("');\n});\n</script>")

token_check = r.text[a+19:b]

в переменной token_check будет строка с номером токена:

>>> token_check
64915
→ Ссылка
Автор решения: gil9red

Вытаскивание токена через регулярное выражение:

import re
import requests

header = {
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
}

r = requests.get("https://santehnika1.ru/personal/", headers=header)
print("Done!")
# print(r.text)

m = re.search(r"\$\('#token_check'\).val\('(.+?)'\);", r.text)
token_check = m.group(1)
print(token_check)
# 40869

Токен вытаскивается этой строкой (.+?), а \ нужны для экранирования, т.к. $, ( и ) являются мета-символами регулярного выражения

→ Ссылка