Какой идеальный язык программы для веб-сканера? - PullRequest
6 голосов
/ 10 июня 2009

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

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

Спасибо.

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

Ответы [ 7 ]

9 голосов
/ 10 июня 2009

Python, вероятно, или Perl.

Perl имеет очень хороший LWP ( Библиотека для WWW в Perl ), Python имеет urllib2.

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

Я несколько раз делал сканер в Perl, это вечер работы.

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

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

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

7 голосов
/ 10 июня 2009

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

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

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

Удачи!

3 голосов
/ 11 июня 2009

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

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

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

2 голосов
/ 10 июня 2009

Есть ли способ проверить заранее если сайты с которых я сбор данных защищены от Искатели

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

1 голос
/ 11 июня 2009

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

записей: загрузка% records.txt
; (содержимое файла records.txt выглядит так - отступ не важен)
[
[en.wikipedia.org/wiki/Budget_deficit
"Дефицит бюджета США (Википедия)"
{

Эта страница была последний раз изменена}
«1 июня 2009 года в 11:26.»]

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

; Теперь просматривайте записи и проверяйте сеть на предмет изменений
записи foreach rec [
html: читать rec / 1; добавьте здесь проверку ошибок на 404 секунды или время ожидания
parse / all html [any [thru rec / 3 копировать curr-mod-date в ]]
если только rec / 4 = curr-mod-date [
печать ["ИЗМЕНЕНО ИЗМЕНЕНО:" rec / 2]
; проанализируйте снова, чтобы собрать и сохранить определенные данные страницы здесь
; обновить файл% records.txt с обновленными отметками времени
]
]

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

1 голос
/ 11 июня 2009

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

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

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

0 голосов
/ 10 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...