Уведомления

Группа в Telegram: присоединиться

#1 Фев. 4, 2019 20:01:09

Pablic
Зарегистрирован: 2019-02-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг книжного сайта

Всем здравствуйте, прошу помочь с одним делом.
Ситуация такая: есть книжный сайт, который по специальной подписке даёт доступ к книге через собственный viewer. Доступ именно ко всем страницам книги можно получить только если ты авторизован на сайте с подпиской, но в если в браузере вставить url по типу "http/***/page/4" и открыть, то скачается svg файл с текстом страницы.
Исходя из этого я решил написать скрипт, который бы скачивал все страницы и сшивал бы их в книгу, но когда я использую такой запрос:

 import requests
s = requests.Session()
page = s.get('url страницы по которой идёт скачивание')
with open('./page.svg', 'w') as output_file:
  output_file.write(page.text)

Файл svg, после выполнения данных команд сохраняет страницу с надписью “Просмотр недоступен” как это было бы если я попытался посмотреть эту страницу в viewer'е без авторизации. На тот момент я был авторизован в аккаунте с подпиской.

Подскажите пожалуйста чего не хватает в запросе или как узнать какую ещё информацию от меня хочет сервер. Заранее спасибо

Отредактировано Pablic (Фев. 4, 2019 20:17:38)

Офлайн

#2 Фев. 4, 2019 22:52:38

vic57
Зарегистрирован: 2015-07-07
Сообщения: 869
Репутация: +  122  -
Профиль   Отправить e-mail  

Парсинг книжного сайта

возможно станица динамическая, с JS. тут реквестом не обойдешься
посмотри код страницы в браузере

Офлайн

#3 Фев. 4, 2019 23:01:12

Pablic
Зарегистрирован: 2019-02-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг книжного сайта

vic57
возможно станица динамическая, с JS. тут реквестом не обойдешься посмотри код страницы в браузере
Если Вы имеете ввиду URL по которому файл спокойно скачиватся, то я не знаю как посмотреть его код в браузере. Я могу сказать точно, что после перехода по нему происходит GET запрос, который возвращает мне SVG файл со страницей. Что мешает мне со скрипта, грубо говоря, также обратиться к URL и получить файл?

Отредактировано Pablic (Фев. 4, 2019 23:01:38)

Офлайн

#4 Фев. 4, 2019 23:14:39

vic57
Зарегистрирован: 2015-07-07
Сообщения: 869
Репутация: +  122  -
Профиль   Отправить e-mail  

Парсинг книжного сайта

смотрите на веб-инспекторе в браузере, вариантов что вам мешает много

Офлайн

#5 Фев. 4, 2019 23:42:49

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 386
Репутация: +  60  -
Профиль   Отправить e-mail  

Парсинг книжного сайта

Вероятно, что Pablic авторизован на сайте через какой-то из браузеров у себя. А авторизацию через requests не выполняет. Конечно могу и ошибаться, но исходя из представленного кода так и есть.

Офлайн

#6 Март 22, 2019 12:04:47

Lunnar
Зарегистрирован: 2019-03-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг книжного сайта

Проблема решена или еще актуальна?

Офлайн

#7 Март 22, 2019 12:13:44

Pablic
Зарегистрирован: 2019-02-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг книжного сайта

Lunnar
Проблема решена или еще актуальна?
Саму задачу решил, но использовал библиотеку selenium и тупо повторял свои действия на сайте

Офлайн

#8 Март 31, 2019 14:20:11

tz4678@gmail.com
Зарегистрирован: 2014-12-07
Сообщения: 85
Репутация: +  -2  -
Профиль   Отправить e-mail  

Парсинг книжного сайта

Сохранить все ссылки со страницы в файл можно и средствами js:

 (a => {
  a.href = 'data:text/plain;charset=utf-8,' + encodeURIComponent([...document.getElementsByTagName('a')].map(a => a.href).join('\n'))
  a.download = Date.now() + '-links.txt'
  document.body.appendChild(a)
  a.onclick = () => a.remove()
  a.click()
})(document.createElement('a'))

Запускать в консоли.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version