Python 3, веб-соскабливание и Javascript

Я пришел к вопросу о вступлении в рукопашную схватку на веб-страницах с помощью Javascript с помощью Python3. Мне хорошо известно, что мой ботинок может контактировать с мертвой лошадью, но мне все равно нравится рисовать мой шестиструй. Это спагетти западные; быть моей серой шляпой?

:: Предыстория ::

Я использую Python 3.2.3.

Я заинтересован в сборе исторических данных // etf // взаимные цены за YTD, 1 год, 3 года, 5-летнего 10-летнего … и / или аналогичные таймфреймы для пользовательского фонда, etf или взаимный фонд. Я установил свои сайты на Morningstar.com, поскольку они, как правило, предоставляют как можно больше данных без необходимости входа в систему; другие люди, такие как finance.google.com и c, имеют тенденцию быть непоследовательными в отношении того, какие данные они предоставляют в отношении акций против etfs против взаимных фондов.

Компромисс в использовании Morningstar для этих исторических данных или «Trailing Total Returns», как они его называют, заключается в том, что для создания этих данных они используют Javascript.

Вот несколько примеров ссылок из Morningstar:

Взаимный фонд;

ЕФО;

Фондовый.

Меня интересует часть «Trailing Returns», верхняя строка или около того чисел в диаграмме, созданной Javascript.

:: Попытка до сих пор ::

Я подтвердил, что wget не играет с Javascript; даже загрузка всех связанных файлов [css, .js, & c] не позволила мне локально отображать javascript в браузере или в скрипте. Исследование здесь, в StackOverflow, подтвердило это. Я хочу, чтобы меня исправили.

Мои исследования сообщили мне, что Mechanize не существует для Python3. Я все равно попытался, и повернулся в полицейского Джавра, кричащего: «Я знал это!» в сообщении об ошибке «модуль не существует».

:: Я слышал … ::

-> Селен. Тем не менее, я понимаю, что для этого требуется, чтобы ваш любимый браузер действительно открывал веб-страницу, перемещался, а затем не закрывался, потому что для Selenium нет опции «закрыть эту вкладку // окно» // команда //. Что делать, если я // my_user хочу получить исторические данные для многих etfs, акций и / или взаимных фондов? В браузере открыто много открываемых окон tabs //, которые не обязательно были открыты для открытия.

-> httplib2. Я думаю, что это хорошо, но я сомневаюсь, что он будет играть с Javascript. Это, например, с использованием .cache и get options?

import httplib2 conn = httplib2.Http(".cache") page = conn.request(u"http://the_url","GET") 

-> Мельница. См. «Селен». Я, однако, достаточно сдержан, чтобы спеть «Человек Ла-Манча».

-> код веб- скина Google. Может ли попытка загрузить загруженную Javascript страничку … положительные результаты?

Я читал болтовню о необходимости «эмуляции браузера без браузера». Звучит как Mechanize, но не для Python3, как я сейчас понимаю.

::Мой вопрос::

Любые предложения, указатели, решения или «посмотреть здесь»?

Большое спасибо,

Майлз, Пыльный пустынный житель.

  • Вход в LinkedIn с сеансами запросов python
  • Веб-скребка HTML-таблицы с использованием Python
  • Скремблирование динамического содержимого на веб-сайте
  • Python Красивый суп, как JSON декодировать `dict`?
  • как получить tbody из таблицы из красивого супа python?
  • Использование Python для очистки вложенных разделов и интервалов в Twitter?
  • Использование модуля запросов Python для отправки формы без имени ввода
  • Веб-скребок с Selenium Python
  • One Solution collect form web for “Python 3, веб-соскабливание и Javascript”

    Когда страница загружает данные через javascript, она должна делать запросы к серверу для получения этих данных через функцию XMLHttpRequest (XHR). Вы можете видеть, какие запросы они делают, а затем сделать их самостоятельно, используя wget!

    Чтобы узнать, какие запросы они делают, используйте веб-инспектор (Chrome и Safari) или Firebug (Firefox). Вот как это сделать в Chrome:

    ключ / инструменты / инструменты разработчика / сеть (вкладка в верхней части инструментов) / фильтр XHR внизу.

    Вот пример запроса, который они делают в javascript

    Если вы внимательно посмотрите на URL-адрес запроса XHR, вы заметите, что все возвращаемые возвраты имеют одинаковый формат:

    http://performance.morningstar.com/Performance/cef/trailing-total-returns.action?t=

    Вам просто нужно указать t . Например:

    http://performance.morningstar.com/Performance/cef/trailing-total-returns.action?t=VAW http://performance.morningstar.com/Performance/cef/trailing-total-returns.action?t=INTC http://performance.morningstar.com/Performance/cef/trailing-total-returns.action?t=VHCOX

    Теперь вы можете wget эти URI и проанализировать данные напрямую.

    Python - лучший язык программирования в мире.