Говоря о поисковых роботах, все думают о Python, правда, поисковые роботы уже являются одним из местоимений Python, и они сильно уступают Java. Многие люди не знают, что Java может быть веб-сканером. На самом деле, Java также может быть веб-сканером и может делать это очень хорошо.В сообществе с открытым исходным кодом есть много отличных Java-фреймворков для веб-сканеров, таких как webmagic. Моей первой официальной работой было использование webmagic для написания программы сбора данных.В то время я участвовал в разработке системы анализа общественного мнения, которая включала в себя сбор большого количества новостей веб-сайтов.Мы использовали webmagic для написания программы сбора. Его принцип дизайна по-прежнему требует много обходных путей.На самом деле, дизайн веб-магии основан на Scrapy, поэтому он может быть таким же мощным, как Scrapy.Мы подробно обсудим структуру веб-магии в дальнейшем.
В последующие несколько лет работы я также участвовал в нескольких проектах краулеров, но в большинстве из них используется Python, кроме языка у краулера есть еще и набор идей. Написание программ для поисковых роботов на протяжении многих лет очень помогло мне в моем личном техническом росте, потому что в процессе сканирования я сталкиваюсь с различными проблемами.На самом деле, сканирование веб-страниц по-прежнему является очень техническим тестом, помимо проверки того, что моя коллекция программа доступна. Кроме того, вы столкнетесь со всевозможными странными проблемами на просканированном веб-сайте, например, имеет ли вся HTML-страница атрибут class или id. Вам нужно извлечь табличные данные с этой страницы и извлечь их элегантно, что очень проверить свое воображение и навыки. Мне очень повезло, что я познакомился с поисковым роботом, когда впервые пришел в отрасль, что ускорило мое понимание и познание Интернета и расширило мой кругозор.
В последние несколько лет веб-сканеры были относительно популярны.Если вы хотите изучить веб-сканеры Java, я обобщил четыре основных знания, которые вам необходимо знать, если вы хотите изучить веб-сканеры Java, основываясь на своем собственном опыте.
1. Рептилии с «моралью»
Почему я поставил это на первое место? Потому что я думаю, что это более важно, что такое "моральная" гадина? Он заключается в том, чтобы следовать правилам просматриваемого сервера, не влияя на нормальную работу просматриваемого сервера и не приводя к сбою просматриваемой службы.Это "моральный" поисковый робот.
Часто обсуждается вопрос, законны ли поисковые роботы? Знай, что ты увидишь, будет так
Есть тысячи ответов.Среди многих ответов я лично согласен со следующим ответом.Как компьютерная технология краулер определяет свою нейтральность, поэтому сам краулер не запрещен законом, но использование краулерной технологии для получения данных является незаконным или даже преступным. Так называемый конкретный разбор конкретных вопросов, как и само использование фруктовых ножей законом не запрещено, но законом не допускается применение его для нанесения ударов людям.
Являются ли рептилии незаконными? В зависимости от того, является ли то, что вы делаете, незаконным, какова природа поискового робота? Суть поисковых роботов в том, чтобы использовать для доступа к страницам машины, а не людей. Для меня определенно не противоречит закону просмотр общедоступных новостей, поэтому для меня не является нарушением закона сбор новостей, опубликованных в Интернете.Как и основные веб-сайты поисковых систем, другие веб-сайты стремятся быть просканированными поисковыми роботами. . Другая противоположная ситуация - сбор личных данных других людей. Вы сами не можете проверять личную информацию других людей, поэтому также незаконно использовать программу для ее сбора. Это похоже на нож для фруктов, упомянутый в ответе. не является незаконным само по себе, но незаконно использовать его для нанесения ударов ножом людям.
Чтобы быть «моральным» поисковым роботом, вы должны понимать протокол роботов.
Многие веб-сайты заявят, что протокол Robots говорит вам, какие страницы можно сканировать, а какие нельзя.Конечно, протокол Robots — это просто соглашение, точно так же, как места в автобусе отмечены местами для пожилых, слабых , больные и инвалиды. , вам не противозаконно там сидеть.В дополнение к соглашению также необходимо ограничить наше поведение по сбору данных.В «Меры по управлению безопасностью данных (проект для комментариев)», глава 2, статья 16, указывается:
Сетевые операторы должны использовать автоматизированные средства для доступа и сбора данных веб-сайта и не должны препятствовать нормальной работе веб-сайта, такое поведение серьезно влияет на работу веб-сайта, если трафик, собранный автоматическим доступом, превышает одну треть среднего дневного трафика веб-сайта, веб-сайт должен остановить автоматический сбор доступа, когда веб-сайт запрашивает его.
Это правило гласит, что поисковые роботы не должны мешать нормальной работе веб-сайта.Если вы используете поисковый робот для отключения веб-сайта, настоящие посетители не могут получить доступ к веб-сайту, что является очень неэтичным поведением. Такого поведения следует избегать.
В дополнение к сбору данных нам также необходимо обратить внимание на использование данных.Даже если мы собираем личную информацию и данные с разрешения, мы не должны продавать личные данные.Это прямо запрещено законом, см.:
Согласно ст. 5 Разъяснения Верховного народного суда и Верховной народной прокуратуры по некоторым вопросам применения законодательства при рассмотрении уголовных дел о посягательстве на личную информацию граждан, толкование «тяжких обстоятельств»:
- (1) Незаконное приобретение, продажа или предоставление более 50 единиц информации о местонахождении, коммуникационного контента, кредитной информации и информации об имуществе;
- (2) Незаконное приобретение, продажа или предоставление более 500 единиц личной информации граждан, которая может повлиять на личную и имущественную безопасность, такую как информация о жилье, записи разговоров, информация о здоровье и физиологии, информация о транзакциях и т. д.;
- (3) Незаконное приобретение, продажа или предоставление более 5000 единиц личной информации граждан, кроме тех, которые указаны в пунктах 3 и 4, составляют «серьезные обстоятельства» в соответствии с «преступлением посягательства на личную информацию граждан».
- Кроме того, без согласия собираемого лица даже предоставление правомерно собранных персональных данных граждан другим лицам подпадает под действие статьи 253-1 Уголовного кодекса «Предоставление персональных данных граждан» и может являться преступлением.
2. Научитесь анализировать Http-запросы
Каждый раз, когда мы взаимодействуем с сервером, это происходит через протокол Http.Конечно, некоторые не протокол Http.Я не знаю, можно ли это собрать.Просто, мы берем Baidu для получения новости в качестве примера
Мы открываем инструмент отладки F12, нажимаем версию просмотра NetWork, чтобы просмотреть все запросы, и находим ссылку в нашей адресной строке.Основная ссылка обычно находится в верхней ссылке NetWork. В столбце просмотра заголовков справа мы видим параметры, необходимые для этого запроса.Здесь нам нужно обратить особое внимание на два столбца опций «Заголовки запроса» и «Параметры строки запроса».Request HeadersУказывает параметры заголовка запроса, необходимые для этого Http-запроса. Некоторые веб-сайты будут блокировать поисковые роботы в соответствии с заголовком запроса, поэтому параметры внутри все еще необходимо понимать. Большинство параметров в параметрах заголовка запроса являются общедоступными. часто используются параметры Agent и Cookie. User-Agent идентифицирует заголовок запроса браузера, а Cookie хранит учетные данные пользователя.
Query String ParametersПредставляет параметры запроса Http, что очень важно для почтовых запросов, поскольку здесь можно просмотреть параметры запроса, что очень полезно для почтовых запросов, таких как имитация входа в систему.
Выше приведен анализ ссылок HTTP-запроса в веб-версии.Если вам нужно собрать данные в приложении, вам нужно использовать симулятор.Поскольку в приложении нет инструмента отладки, вы можете использовать только симулятор. Есть два вида инструментов симулятора, которые используются больше, желающие могут проводить исследования.
- fiddler
- wireshark
3. Научитесь анализировать HTML-страницы
Все страницы, которые мы собираем, являются HTML-страницами. Нам нужно получить необходимую нам информацию на HTML-страницах. Это включает в себя синтаксический анализ HTML-страницы, то есть синтаксический анализ узла DOM. Это главный приоритет. Если вы этого не знаете, то же самое фокусник без реквизита, он может только тупо смотреть. Например, следующая HTML-страница
Нам нужно получить заголовок "java user-agent для определения наличия доступа к компьютеру", сначала проверяем элемент через F12 Тег span, в котором находится заголовок, обрамлен на рисунке Как нам анализировать информацию об этом узле? Существуют тысячи методов.Селекторы, которые часто используются, должны быть селекторами CSS и XPath.Если вы не знаете эти два селектора, вы можете щелкнуть ссылку ниже, чтобы узнать о них:Справочное руководство по селекторам CSS:https://www.w3school.com.cn/cssref/css_selectors.asp
Учебник XPath:https://www.w3school.com.cn/xpath/xpath_syntax.asp
Синтаксис парсинга с помощью селекторов CSS:#wgt-ask > h1 > span
Способ использования синтаксического анализа XPath://span[@class="wgt-ask"]
Таким образом получается узел спана, а значение нужно вынести из текста.Для селекторов CSS и XPath, помимо написания самим, мы также можем использовать в помощь браузер, например хром браузер.
Просто выберите соответствующий узел, щелкните правой кнопкой мыши, чтобы найти Копировать, он предоставляет несколько способов получить узел, как показано на рисунке выше, Селектор копирования соответствует селектору Css, Копировать XPath соответствует XPath, эта функция по-прежнему очень полезна.4. Разберитесь со стратегиями борьбы с рептилиями
Поскольку поисковые роботы сейчас очень распространены, многие веб-сайты будут иметь механизмы защиты от поисковых роботов для фильтрации поисковых роботов, чтобы обеспечить доступность веб-сайта.Это также очень необходимое средство.В конце концов, если веб-сайт нельзя использовать, нет интереса к говорить о. Существует много методов борьбы с рептилиями, давайте рассмотрим несколько распространенных методов борьбы с рептилиями.
Механизм защиты от рептилий на основе заголовков
Это относительно распространенный механизм защиты от сканирования.Веб-сайт определяет, является ли программа программой-сканером, проверяя параметры User-Agent и Referer в заголовках запроса. Обойти этот механизм относительно просто, нам нужно только проверить значения параметров User-Agent и Referer, необходимых веб-сайту в веб-странице, а затем установить эти параметры в Заголовках запроса программы-краулера.
Механизм защиты от сканирования, основанный на поведении пользователя
Это также распространенный механизм защиты от сканирования. Наиболее часто используется ограничение доступа по IP-адресу. Сколько раз IP-адресу разрешен доступ только в течение определенного периода времени. Если частота превышает эту частоту, он будет считаться сканером. программа ограничения по IP.
Для этого механизма мы можем решить эту проблему, установив IP-адрес прокси.Нам нужно только получить пакет IP-адресов прокси-сервера с веб-сайта IP-прокси-сервера и установить IP-адрес прокси-сервера при запросе.
В дополнение к ограничениям IP-адресов также будет временной интервал, основанный на вашем доступе каждый раз.Если ваш временной интервал между каждым доступом фиксирован, он также может считаться сканером. Чтобы обойти это ограничение, нужно установить другой временной интервал при запросе.Соотношение заключается в том, чтобы спать в течение 1 минуты в этот раз и 30 секунд в следующий раз.
Механизм защиты от сканирования на основе динамических страниц
Веб-сайтов много. Данные, которые нам нужно собрать, запрашиваются через Ajax или генерируются через JavaScript. Для таких сайтов это довольно болезненно. Есть два способа обойти этот механизм. получить обработанную страницу. Второй способ — метод обратного мышления: мы напрямую обращаемся к ссылке для получения данных, получая AJAX-ссылку запрошенных данных.
Выше приведены некоторые базовые сведения о поисковых роботах, в основном ознакомление с инструментами и стратегиями предотвращения сканирования веб-сканеров. Эти сведения будут полезны нашим поисковым роботам в дальнейшем. Поскольку в последние годы мы периодически писали несколько проектов поисковых роботов с использованием Java. Искатель также находится на ранней стадии, а Python используется на более позднем этапе.Недавно я внезапно снова заинтересовался сканером Java, поэтому я собираюсь написать серию сообщений в блоге, посвященных поиску, чтобы реорганизовать веб-сканер Java. , Это краткий обзор поискового робота Java. Если он может помочь вам подумать, даже лучше использовать Java в качестве поискового робота. Ожидается, что Java Web Crawler будет состоять из шести статей, от простого к сложному, шаг за шагом охватывающих все проблемы, с которыми я сталкивался при сканировании на протяжении многих лет. Ниже приведены шесть вводных статей по моделированию.
1. Веб-сканер, так просто
Это ознакомительный веб-краулер, который будет использовать Jsoup и HttpClient двумя способами для доступа к странице, а затем использовать проанализированные данные селектора. В конце концов, вы пожнете гада, ведь HTTP-запрос — это так просто.
2. Что мне делать, если я столкнулся с проблемами входа в систему в коллекции веб-страниц?
В этой главе мы кратко поговорим о получении данных, необходимых для входа в систему. Взяв в качестве примера личную информацию Douban, мы кратко поговорим о таких проблемах, связанных с двумя методами ручной установки файлов cookie и имитации входа в систему.
3. Что делать, если коллекция веб-страниц сталкивается с асинхронной загрузкой данных Ajax?
В этой главе кратко рассказывается о проблеме асинхронных данных.На примере Netease News есть два способа получения данных с помощью инструмента htmlunit для получения отображаемой страницы и обратное мышление для прямого получения данных через соединение с запросом Ajax. проблема решается.
4. IP-адрес коллекции веб-страниц заблокирован, что мне делать?
Ограничение доступа по IP должно быть обычным явлением.На примере Douban Movies основное внимание уделяется настройке IP-адресов прокси.Мы кратко расскажем о решении ограничений по IP, а также кратко поговорим о том, как построить свой собственный IP-прокси-сервис.
5. Скорость сбора данных по сети слишком низкая, что мне делать?
Иногда существуют требования к производительности программ-краулеров, этот однопоточный метод может не работать, нам могут понадобиться многопоточные или даже распределенные программы-краулеры, поэтому в этой статье в основном рассказывается о многопоточном кралере и схеме архитектуры распределенного краулера.
6. Анализ варианта использования фреймворка краулеров с открытым исходным кодом webmagic
Раньше я использовал webmagic для создания сканера, но в то время я не очень хорошо понимал структуру webmagic.После нескольких лет опыта у меня появилось новое понимание этой структуры, поэтому я хочу следовать спецификации webmagic. Создайте простую демонстрацию, чтобы испытать мощь веб-магии.
Вышеприведенная серия сообщений в блоге о поисковых роботах. Я использую слова, чтобы записывать фрагменты и фрагменты, а также записывать ямы, с которыми я столкнулся в те годы, когда был непрофессиональным игроком в поисковые роботы. Если вы собираетесь изучать веб-сканер Java, вы можете хорошо обратите внимание на волну, я верю, что вы получите урожай, потому что я буду писать каждую статью с душой.
Наконец
Сделайте небольшую рекламу, добро пожаловать, чтобы отсканировать код и подпишитесь на общедоступную учетную запись WeChat: «Технический блог брата Пинтоу», давайте вместе добьемся прогресса.