Как определить основной URL загрузки текстового файла - PullRequest
0 голосов
/ 21 февраля 2011

На странице ниже есть возможность загрузить текстовый файл.Меня интересует первый файл в разделе txt.

Как мне получить URL.Я могу вытащить это.Как я получаю URL, который не включает в себя сценарий Java с Python.

Сегодня это: volume.20110218.txt.

http://www.optionsclearing.com/webapps/trade-volume-download

Ответы [ 2 ]

1 голос
/ 21 февраля 2011

На странице используются ссылки javascript для отправки скрытой формы для загрузки файла. Форма скрытых полей, кажется, заполняется также javascript.

Похоже, что они делают это, чтобы усложнить автоматизированную загрузку. Если они не возражают против автоматической загрузки, попросите у них более простой интерфейс, иначе прекратите попытки сделать это.

ОБНОВЛЕНИЕ: как прокомментировал Иеремия , они действительно имеют пакетный интерфейс:

http://www.optionsclearing.com/market-data/batch-processing.jsp

1 голос
/ 21 февраля 2011

Ваш вопрос немного расплывчатый.Похоже, вы хотели бы что-то сделать с модулями urllib2 и BeautifulSoup.

Извлечь HTML из базового URL с помощью функций urllib2, проанализировать его с помощью BeautifulSoup и использоватьцель (значение атрибута src) тега привязки (первый TXT?) в таблице, чтобы открыть другое соединение и извлечь это содержимое.Затем откройте локальный файл (или подпроцесс) и передайте в него содержимое второй выборки.

Самая сложная часть использования BeautifulSoup - найти характеристики, которые однозначно идентифицируют часть содержимого, которое вы хотите извлечь.Современный HTML довольно уродлив и имеет тенденцию содержать много постороннего мусора, встроенного в него различными инструментами и библиотеками, которые использовались для его генерации.(Один совет: слово «класс» является зарезервированным ключевым словом Python, а также общим атрибутом в HTML. Таким образом, проще всего передать пары атрибутов / шаблонов «класса» в функции BeautifulSoup, поместив их в словарь: {'class': some_pattern}, а не в более обычной форме keyword=pattern, которая используется для большинства других аргументов).

Чтобы обработать javascript, вам может понадобиться прочитать:

Что является хорошим инструментом дляэкранная очистка с поддержкой Javascript?

Похоже, в настоящее время лучше всего установить пакет HTMLUnit на основе Java в качестве шлюза, а затем написатьваш Python для подключения и управления этим.Вы также можете попробовать Selenium для управления реальным сеансом браузера и извлечения информации из него с помощью механизмов межпроцессного взаимодействия.

...