Значит она лежит в самой странице, других вариантов немного. Обычно её кладут в один из трёх мест: в атрибут контейнера, в переменную внутри инлайнового скрипта, в мета-тег.
Порядок такой: тянете страницу обычным запросом, вытаскиваете подпись регуляркой, следом идёте за данными. Два запроса вместо одного, зато без браузера.
import re, requests
s = requests.Session()
html = s.get(f"https://shop.example/tovar/{art}").text
podpis = re.search(r'"signature"\s*:\s*"([a-f0-9]{32})"', html).group(1)
tovar = s.get("https://shop.example/api/tovar",
params={"art": art, "signature": podpis},
headers={"Referer": f"https://shop.example/tovar/{art}"}).json()
print(tovar["price"], tovar["stock"])
```
три монитора и ни одного свободного