Как пользоваться requests-html в python
К документации к https://pypi.org/project/requests-html/ написано, что он способен парсить также javascript ( а то есть как я понял, если я отправлю основной запрос на сайт для получения информации, также отправятся javascript если они есть ) и я смогу получить полную информацию с страницы сайта.
Мне необходимо получить данные о музыке, по ссылке https://ts-music.com/search/моргенштерн/vk/, все нужные мне данные загружаются с помощью JavaScript, и отдельного запроса к api сайта ( юзать api сайта не получится ).
Есть ли возможность получить необходимые мне данные с помощью requests html, если да, тогда как?

Ответы (1 шт):
Слишком сложным путём идешь, пытаясь выполнять javascript код на странице, вполне реально обойтись обычными запросами. Алгоритм работы этого сайта такой:
- Отправляется GET запрос на поиск.
В инструментах разработчика во вкладке Network есть ещё один GET запрос из js скрипта: туда передаются параметры q={строка поиска} и hash, он и возвращает список аудиозаписей.
hash находится в первом GET запросе, следовательно, его нужно вытащить и отправить запрос на api-vk.com/tunes-music-vk-search.php
Рабочий код:
import requests, re
... s = requests.Session()
... name = "foobar"
... r = s.get(f"https://ts-music.com/search/{name}/vk/")
... # получение из js скрипта ссылки, куда отправлять следующий запрос
... # возможно в каком-то элементе лежит нужный хеш, я не изучил данный вопрос, поэтому в примере используется regex
... uri = re.findall('xhttp.open\("GET", "(.*)", true\);', r.text)[0]
... # заголовок Origin необходим, иначе запрос не пройдёт, выявленно экспериментально
... r2 = s.get(uri, headers={"Origin": "https://ts-music.com"})
... s.close()
В ответе r2 находятся аудиозаписи.
