2009-06-10 3 views
6

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

У меня очень мало опыта в программировании, и я надеюсь, что это будет полезно для обучения. Скорость - это не огромная проблема, я полагаю, что сканер мог бы загружать 4000 страниц в день.

Спасибо.

Редактировать: Есть ли способ проверить заранее, если сайты, из которых я собираю данные, защищены от искателей?

ответ

9

Возможно, Python, или Perl.

У Perl есть очень хороший LWP (Library for WWW in Perl), у Python есть urllib2.

Оба являются легкими языками сценариев, доступными на большинстве ОС.

Я сделал гусеничный ход в Perl довольно много раз, это вечер работы.

И нет, они не могут защитить себя от сканеров, за исключением использования CAPTCHA - все остальное легче взломать, чем настроить.

Существовал вопрос о Java: Java в порядке. Это более подробный и требует некоторой настройки среды разработки: так что вы не сделали бы этого за один вечер, возможно, неделю. За небольшую задачу, о которой указал автор вопроса, это может быть излишним. С другой стороны, есть очень полезные библиотеки, такие как lint, tagsoup (обход DOM для случайного HTML) и lucene (полнотекстовое индексирование и поиск), поэтому вам может понадобиться Java для более серьезных проектов. В этом случае я бы порекомендовал библиотеку Apache commons-httpclient для веб-сканирования (или nutch, если вы сумасшедший :).

Также: есть продукты для хранения, которые отслеживают изменения на определенных веб-сайтах и ​​представляют их полезными способами, поэтому вы можете просто захватить их.

+5

веб-сайты не могут защитить себя от искателей, но искатели с честью соблюдают Протокол исключения роботов - и клиенты с честью соблюдают условия обслуживания любого веб-сайта. –

+0

Я согласен с тобой. – alamar

+0

Большинство вещей в Интернете вызывают Java для программирования сканеров. Ява слишком сложна? или в чем проблема? – Alex

-3

Я бы сказал, PHP. Это веб-ориентированный язык, что означает множество библиотечных функций для выполнения всех нечетных мелочей, которые вам нужно будет сделать в таком проекте. У этого есть хорошая библиотека для этого встроенного (CURL), и это - мертвый простой язык. Вы перерастуте его относительно быстро, если вы продолжите программирование в нем, но для чего-то простого, как это, это хороший выбор.

+1

Я бы не рекомендовал PHP для клиентских скриптов. Это можно сделать, но это наоборот. – alamar

+1

Я сделал это и должен сказать, что это было ужасно. Отсутствие резьбы вызывает много проблем при написании эффективного паука. – Lothar

+0

Я сделал несколько сканеров PHP, это нормально, но иногда он просто отказывается получать элементы из некоторых URL-адресов, но доверяйте мне, что Python - лучший выбор, я не работал с Perl, но c'mon man, Python - это тот, которые используются Google! –

2

Есть ли способ, чтобы проверить загодя , если веб-сайты, с которых я сбором данных защищены от гусеничных?

За исключением CAPTCHA, это хороший этикет, чтобы уважать содержимое файла robots.txt, если он существует.

7

Язык, в котором вы наиболее комфортно, больше, чем likey - лучший язык для использования.

У меня очень мало программирования опыт

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

Удачи вам!

1

Perl или python - очевидный выбор, это зависит от того, что вам больше всего подходит в конце дня. И это не так сложно, но в целом, если вы обнаружите, что предпочитаете лингвистический язык, который действительно гибкий perl, подойдет вам лучше, где вы находите, что предпочитаете более жесткий язык с более математическим мышлением (особенно, полагая, что есть только один способ сделать что-то правильно), тогда вы, вероятно, почувствуете себя как дома на питоне. Другие языки могут хорошо выполнять эту работу, но эти два являются очевидными выборами из-за переносимости и наличия сильных языков для задач сценариев CLI, особенно для текстовых манипуляций, а также для создания сильных веб-языков, что приводит к большому количеству полезных модулей, доступных для веб-ориентированных задач (давая преимущество упомянутого php, но без отрицательных аспектов php для клиентов). Если для вас доступно большое количество полезных модулей, то для вас perl имеет огромные суммы больше для такого рода задач, чем любой другой язык (в CPAN), возможно, стоит проверить, есть ли код, который вы можете повторно использовать там, прежде чем принимать погрузитесь в какой язык использовать. В некоторых областях один быстрее, чем другой (python обычно превосходит сложную математику, perl обычно может обрабатывать текст быстрее, зависит от того, как вы это делаете).

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

О, и у нас есть книга по программированию коллективного интеллекта, направленная на новичков к теме, я ее никогда не читал, но она должна быть довольно хорошей, прокручивать ее в магазине и рассматривать ее как ее в основном о сети -коллекторные алгоритмы ... Он использует python для примеров.

3

Я создал веб-браузер один раз, но он был создан для поиска по сайтам для получения дополнительных ссылок на другие сайты и последующего использования. Он должен был помнить эти ссылки и следить за тем, чтобы я не посещал сайт дважды, поэтому мне нужно было очень быстро проверить наличие дубликатов URL. Для этого я создал свою собственную таблицу хэша в Delphi 2007. С некоторыми дополнительными знаниями о том, как использовать COM-интерфейс Internet Explorer, мне удалось прочитать довольно много страниц за короткий промежуток времени. Я использовал Delphi для написания этого искателя, потому что мне нужна была большая производительность.

С другой стороны, я также выбрал Delphi, потому что это тот язык, с которым мне больше всего нравится, плюс это помогло мне многому научиться о нескольких интересных темах, в том числе о том, как писать собственные алгоритмы хеш-таблицы. Кроме того, это была очень интересная задача для опытного программиста, подобного мне.

Мои рекомендации уже предоставлены: используйте инструменты, с которыми вам наиболее удобно.

1

Если вы новичок, я бы предложил «легкий» язык, такой как REBOL. В REBOL базовый скрипт для проверки кучи страниц википедии для модификаций будет выглядеть следующим образом.Очевидно, что «легкий» субъективен, и вам все равно понадобятся некоторые базовые изменения в этом коде для удовлетворения ваших требований.

записи: load% records.txt
; (Содержание records.txt файла выглядит this- отступ не важно)
[
        [en.wikipedia.org/wiki/Budget_deficit
        "Бюджет США Дефицит (википедия)"
        {< Li ID = «LastMod» > Эта страница была Последнее изменение}
        «1 июня 2009 в 11:26. "]

        [en.wikipedia.org/wiki/List_of_U.S._states_by_unemployment_rate
        "США Уровень безработицы (Википедия)"
        {< Li ID = "LastMod" > Эта страница была Последнее изменение}
        "25 мая 2009 в 20:15."]
]

; Теперь в цикле записи и проверки веб изменений
Foreach Rec записи [
    HTML: чтение Rec/1    ; добавить ошибок chking здесь для 404-х или тайм-аут
        синтаксического анализа/все HTML [любой [через прн/3 копия ТОК-мод-дата </li >]]
            если запись/4 = CURR-мод-дата [
                    печати [ «ИЗМЕНЕНИЕ ОБНАРУЖЕНО:» REC/2]
                 ; разобрать еще раз, чтобы собрать и сохранить конкретные данные страницы здесь
                   ; обновить% записей.TXT файл с обновленными временными метками
         ]
]

REBOL не очень хорошо известны, но это дружелюбный, очень маленькие, кросс-платформенный и GUI-поддержкой. У меня был большой успех с этим для быстрых и грязных сценариев.

Смежные вопросы