Intereting Posts
Сменить ярлыки меню в Evolution Установите NCDU на Scientific из EPEL В чем преимущество локальных архивов над файлами локалей, распространенными в каталогах? enf файла неожиданно (кроме "f $ ing" fi ") Запуск кода uinput на плате DM368 Как работает DAEMON (3)? Запуск в фоновом режиме bash как перенаправить вывод из функции в / dev / null Почему пользователь без какой-либо записи PASSWD в конфигурации sudo должен аутентифицироваться каждый раз? Как автоматически подать два аргумента в программу после запуска? Какие пакеты содержат реализации IPsec и алгоритмы, которые используют его для шифрования? Ошибка загрузки виртуальной машины Debian – «восстановление журнала» Как создать динамическую подстановку процессов на основе ввода (несколько FIFO)? Форматирование английского языка для нажатия клавиши «Создать» Как я могу отобразить сообщение из ~ / .profile? Как объединить разделы видео с помощью avconv?

Сканирование сгенерированного источника страницы

Я пытаюсь просканировать источник этого веб-сайта исследовательской статьи, используя перенаправление с его Идентификатора объекта документа (DOI):

doi=10.1006/jfin.1996.0208 url=$(curl -L -s -w %{url_effective} "http://dx.doi.org/"$doi -o /dev/null) curl -L --referer ";auto" $url > test.htm --dump-header /dev/null 

Однако файл / источник отличается от того, что я вижу, когда открываю ссылку в браузере. Например, список ссылок ограничен 20 элементами, и вместо того, чтобы показывать ссылки на эти элементы, я вижу только «Загрузка».

Очевидно, что источник отличается от того, что показывает мне браузер (FF). В самом деле, когда я смотрю на исходный файл сайта, используя этот букмарклет для просмотра сгенерированного источника, я получаю полный исходный файл, который я хочу иметь.

Теперь есть способ обхода созданного источника веб-страницы? Взглянув на это подробное руководство, я не смог найти ничего, связанного с сгенерированным источником.

Curl выполняет только «главную» страницу. Если на странице, загруженной JavaScript, есть какой-либо контент, вы не получите этого в своих скрещиваниях / обходах при использовании curl .

Лучший способ получить «полные» страницы, которые я нашел, – использовать селен и диск, которые из какого-то скрипта (я использую python для этого). Полное здесь относительно, потому что нет никакой гарантии, что JavaScript будет загружен.

Например, в python virtualenv выполните:

 pip install selenium python dl.py http://unix.stackexchange.com/q/210268/33055 /var/tmp/page.html 5 

с dl.py :

 import sys import time from selenium import webdriver url, file_name, seconds = sys.argv[1:4] browser = webdriver.Firefox() try: browser.get(url) time.sleep(int(seconds)) with open(file_name, 'w') as fp: fp.write(browser.find_element_by_xpath('html').get_attribute( "outerHTML").encode('utf-8')) finally: browser.close()