Задать вопрос
@xdgadd
ML/Python/Cpp

Как распарсить страницу с полной прогрузкой javascript?

Хочу распарсить для датасета arhivach.org.

Основной контент загружается нормально, но вот js скрипты - нет. Конкретно меня интересует всё, что лежит в <span class="post_replies"></span> для каждого поста. Эта часть страницы генерируется динамически, но ни requests, ни selenium не грузят дополнительные скрипты. Методом научного тыка выяснил, что за подгрузку отвечают custom.js и jquery.js.

Каким образом я могу получить страницу с прогруженными скриптами?
  • Вопрос задан
  • 3160 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@rPman
Не мучайтесь, запускайте полноценный браузер (webkit есть под все платформы), при этом вы имеете полный доступ к загружаемой странице, можете инжектить свой код, можете просто получить документ в виде xml (не файл а именно DOM модель, собираемую в т.ч. javascript)

И главное, веб-сайт ничего не сможет сделать чтобы предотвратить ваши попытки автоматизации работы с сайтом (кроме статистических конечно, но тут уже вопрос реализации и ваших требований)
Ответ написан
@xdgadd Автор вопроса
ML/Python/Cpp
Спасибо rPman, благодаря его наводке нагуглил вот это.

Короткий пример:
import dryscrape
import sys

if 'linux' in sys.platform:
    dryscrape.start_xvfb()

sess = dryscrape.Session(base_url = 'http://arhivach.org/thread/')
sess.set_attribute('auto_load_images', False)

# Thread 1234
sess.visit('1234/')

for reply in sess.xpath('//span[@class="post_replies"]'):
    do_stuff()

# Screenshot
sess.render('screenshot.png')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Antonchik
@Antonchik
Программирую на HTML
Посмотрите куда js отправляет запросы на получения контента для <span class="post_replies"></span> сделайте тоже самое и получите нужные вам данные
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы