Какие есть хорошие сканеры, которые могут помочь скачать файлы

Для одного из моих статистических проектов мне нужно СЛУЧАЙНО загрузить несколько файлов со страницы патента Google, и каждый файл представляет собой большой zip-файл. Веб-ссылка следующая:

http://www.google.com/googlebooks/uspto-patents-grants-text.html#2012

В частности, я хочу СЛУЧАЙНО выбрать 5 лет (ссылки вверху страницы) и скачать (т.е. 5 файлов). Знаете ли вы, ребята, есть ли какой-нибудь хороший пакет, который подходит для этой задачи?

Спасибо.


person Marshall Shen    schedule 20.02.2012    source источник
comment
Почему бы вам просто не загрузить все архивы, не сохранить их на диск, а затем заняться чем угодно? Я не знаю, на каком языке программирования вы пишете, но на C# это можно сделать примерно за 20 строк кода (плюс-минус).   -  person Kiril    schedule 20.02.2012
comment
Это правда, но поскольку это командный проект, мы хотели бы иметь несколько скриптов, которые могут выбирать образцы онлайн и загружать ТОЛЬКО те, которые выбраны. Все эти файлы довольно большие, поэтому мы хотели бы взять только то, что нам нужно, чтобы сэкономить место в памяти.   -  person Marshall Shen    schedule 20.02.2012


Ответы (1)


Эта страница содержит в основном zip-файлы, и, глядя на содержимое HTML, кажется, что должно быть довольно легко определить, какие ссылки дадут zip-файл, просто выполнив поиск *.zip в наборе URL-адресов-кандидатов, поэтому я бы рекомендовал следующее:

fetch the page
parse the HTML
extract the anchor tags
for each anchor tag
    if href of anchor tag contaings "*.zip"
        add href to list of file links

while more files needed
    generate a random index i, such that i is between 0 and num links in list
    select i-th element from the links list
    fetch the zip file
    save the file to disk or load it in memory

Если вы не хотите получать один и тот же файл дважды, то просто удалите URL-адрес из списка ссылок и случайным образом выберите другой индекс (пока у вас не будет достаточно файлов или пока у вас не закончатся ссылки). Я не знаю, на каком языке программирования пишет ваша команда, но написать небольшую программу, которая делает вышеперечисленное, не составит большого труда.

person Kiril    schedule 20.02.2012