too_hot_to_stop
@too_hot_to_stop

Как получить данные со страницы сайта, для последующего парсинга?

Хочу распарсить данные о товарах с уценкой galaxystore. Столкнулся с проблемой ещё на стадии получения html страницы. Использую по классике библиотеку request:

url = 'https://galaxystore.ru/discount/'
response = requests.get(url).text
print(response)

При отправке запроса получаю html в таком формате 5f8ead7127bd8173760289.jpeg В целом при подстановке любых заголовков получаю ответ в таком зашифрованном виде.

Что пробовал:

  1. urllib
  2. Насколько понял, нужный контент подгружается ajax'ом, так что с помощью инструментов разработчика нашёл нужный запрос, но обратившись к нему получил то же самое зашифрованное содержимое
  3. Менял User agent
  4. Пробовал с помощью withзаписать ответ, а потом открывать для дальнейшего парсинга
  5. На просторах интеренета люди советуют selenium. Я его конечно попробовал и у меня получилось добраться до нужного содержимого, но это инструмент для тестирования, довольно медленный и под мою задачу не подходит.


На данный момент я ещё в процессе обучения и это будет мой первый проект связанный с парсингом, поэтому хочу разобраться с возникшей проблемой.
  • Вопрос задан
  • 453 просмотра
Пригласить эксперта
Ответы на вопрос 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Этот сайт с помощью этого js выставляет куки, потом редиректит на себя же ещё раз, при этом с правильной кукой выдаёт уже нормальный контент.

Основная логика тут:

salt="1524556899";
document.cookie="ipp_sign="+e+"_"+salt+"_"+md5(e+salt)+"; expires=Tue, 31 Dec 2030 23:59:59 GMT; path=/;";
ipp.setCookie();
window.location.href = "https://galaxystore.ru/discount/?utm_referrer=" + window.location.hash;


Соответственно, сайт вычисляет fingerprint, по которому идентифицирует пользователя, далее солит его и считает md5. Можно пытаться брать что-нибудь рандомное, похожее на этот fingerprint, и воспроизводить такую же логику. Но при активном трафике на эту страницу там могут и начать с этим бороться, в том числе банить по IP, вносить какие-нибудь мелкие изменения в алгоритм итд итп.

PS: К вопросу об этической стороне. Все мы любим иногда получить что-то подешевле, это не грех. Но иногда есть деятели, которые хотят подешевле покупать десятками, затем продавать дороже каким-нибудь лохам и на этом наживаться. Именно они и любят делать такие вот парсеры. Это некрасиво, я бы отказался от такого заказа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект
22 нояб. 2024, в 03:54
1500 руб./за проект