Как спарсить элемент contentUrl, когда сервер отправляет не только json но и html код
import requests
resp = requests.get('https://ru.pinterest.com/pin/211174974203236/')
print(resp.text)
вот этот код возращает ответ и ответ там довольно большой, мне нужно получить с нее contentUrl, этот элемент почти в самом низу, я бы мог просто превратить это в json, но выдает ошибку из за html кода вначале
Ответы (2 шт):
Автор решения: Bail
→ Ссылка
я сделал через find(), в функцию вставляю contentUrl, она возращает индекс буквы с, и я принчу через индекс от с до след 100 символов, делаю сплит по “, и вывожу второй элемент и это и есть ссылка, которая мне нужна
Автор решения: Pavel Mertvago
→ Ссылка
в теории длина возвращаемой ссылки может быть больше, чем 100 символов (как в ответе @Bail).
здесь поиск contentUrl реализован через re.Patterns
и гарантированно возвращает текст ссылки целиком
import json
import re
import requests
resp = requests.get('https://ru.pinterest.com/pin/211174974203236/')
pattern = r'"contentUrl":"(https://[^"]+)"'
match = re.search(pattern, resp.text)
if match:
content = json.loads('{'+match.group(0)+'}')
print(content['contentUrl'])