Эта статья была впервые опубликована:Хит воды - расскажите об опыте [развития рептилий] за последние шесть месяцев.
предисловие
На работе я использую краулеры один за другим почти полгода, за эти полгода я прошел путь от новичка в python до начала работы с краулерами, а затем и до реализации функций. От утреннего PHP до напряженного дня Python, до текущего переключения PHP/Python по желанию, изгибы и повороты очевидны, и действительно потребовалось много окольных путей. Но, к счастью, тяжелая работа окупается, за полгода, используя Python, я также расту вместе с ним. Теперь, чтобы подвести итог, я надеюсь, что это может помочь нуждающимся студентам.
Я уже писал несколько статей о Python и Scrapy, Portal:
- Заметки об изучении Python (базовые)
- Заметки об изучении Python (часто используемые расширения)
- Исследование поискового робота Python
- Заметки об изучении фреймворка Python scrapy и простой бой
- Как Python сканирует динамические веб-сайты?
Учебные статьи
python
С самого начала контакта с краулерами первое, что вам нужно понять, это построение среды, синтаксис и особенности python.В Интернете есть много связанных туториалов.Вот несколько туториалов, которые я использовал в процессе обучения. большая роль
- Учитель Ляо СюэфэнУчебник по Python, где впервые началось путешествие по Python. Прочтите статью и учитесь во время написания демо
- в учебнике для новичковБазовое руководство по PythonТакже можно использовать для быстрого обучения
- Документация Python3, который можно быстро найти при забывании некоторых функций
гусеничный фреймворк
Когда базовый синтаксис Python почти понятен, вы можете начать изучать структуру сканера, связанную с Python. Фреймворк сканера Python, наиболее известным из которых являетсяScrapyфабриковать. Главное — понять, как работает фреймворк Scrapy, и научиться им пользоваться. Изучайте Scrapy, читая документы, сообщения в блогах и просматривая видео.Ниже я размещаю несколько хороших блогов и видео по Scrapy, которые я видел в процессе обучения.
- Заметки об изучении фреймворка Python scrapy и простой бой--Это мой собственный краткий пост в блоге
- Официальная документация Scrapy (на английском языке)
- Документация Scrapy (китайская версия)Студенты, которые не очень хорошо владеют английским языком, понять его можно, но перевод внутри сказать сложно.
- Скрейпинг видео на станции B (1)Видео не длинное, но его достаточно для начала работы со Scrapy.
- Скрейпинг видео на станции B (2)Есть также обучающие объяснения, включая Scrapy
- Скрейпинг видео на станции B (3)Сначала я следил за этим видео, чтобы изучить Scrapy, и лектор в нем тоже очень хороший. Но когда я писал эту статью, я обнаружил, что исходное видео исчезло.Если вам нужно узнать больше, вы можете связаться с мастером UP.
В дополнение к ссылкам для обучения, представленным выше, на github также есть несколько относительно полных проектов Python и Scrapy, вы можете попытаться понять их.
Xpath
XPath используется для навигации по элементам и атрибутам в XML-документах. Другими словами, вы можете использовать Xpath для определения позиции элемента на странице и получения содержимого элемента. Почти весь код сканера, который я пишу, использует Xpath для получения содержимого страницы. Поэтому изучение Xpath также необходимо.
Xpath похож на Dom в Javascript. Он может найти местоположение указанного элемента в соответствии с идентификатором, классом и т. д. и получить соответствующий контент. Я просто перечислю один или два наиболее распространенных способа его использования.
-
/
элемент следующего уровня -
//
дочерний элемент -
.
текущий узел -
get
получить одно значение -
getall
получить все значения
Для получения подробной информации обратитесь к W3school.Учебник по XPath, который очень подробно описан.
Обычный
Сканер, естественно, неотделим от обычного, и существует множество сценариев, в которых необходимо использовать обычный для получения указанного содержимого в строке. Если вы не знаете правил или не знакомы с правилами, то это напрямую повлияет на эффективность работы (конечно, если вы незнакомы, вы можете спросить у коллег, но можете и сами). Я страдал от потери незнакомства с обычными правилами, так случилось, что мне нужно было использовать обычные правила для изучения краулеров, я воспользовался этой возможностью, чтобы заново понять и узнать об обычных правилах.
Что касается документации, вы можете напрямую обратиться к учебнику для новичков.регулярное выражение
Настоящий бой
Узнав, как использовать Python, Scrapy и Xpath, вы можете попробовать разработать небольшой сканер самостоятельно. Сначала я пытался написать небольшой краулер, который сканирует статьи Jianshu.Тест может сканировать данные, но после сканирования большего количества данных будут некоторые проблемы (эти проблемы будут упомянуты ниже). Опубликовать проект сканера, который сканирует все статьи на моем собственном веб-сайте.Python Scrapy demo, код написать очень просто, то есть перевернуть страницу, чтобы просмотреть все заголовки статей и содержание в моем блоге. Сяобай также должен быть в состоянии понять это очень хорошо.
Анти-подъем
Как упоминалось выше, при сканировании статей Цзяньшу, когда данные сканирования превышают определенный объем, могут возникнуть некоторые проблемы. Основная причина в том, что мне запретили сканировать. Причина в том, что я просканировал много статей Jianshu одновременно, поэтому мой IP был временно занесен в черный список Jianshu, поэтому я не мог сканировать данные. Через некоторое время все будет хорошо, но сканируя снова, пока IP не заблокируют, объем данных, просканированных в середине, намного меньше, чем в первый раз. Это антиползучий механизм Цзяньшу.
По поводу антискалолазания и антискалолазания я тоже уже писал статьи:Исследование поискового робота Python, в котором перечисленыОбщие процедуры против лазания,так же какСтратегии выживания против рептилий, который я сделал после того, как некоторое время изучал поисковые роботы. Может быть, понимание не слишком глубокое, и его можно использовать как понимание.
IP-адрес прокси
Для IP-адреса прокси необходимо извлекать его отдельно, так как для выполнения задачи проекту краулера необходимо использовать множество IP-адресов, иначе, если IP-адрес будет заблокирован веб-сайтом, бизнес не остановится, такая ситуация не допускается. Поэтому нам необходимо создать пул прокси-IP-адресов для наших поисковых роботов, хранить пригодные для использования и качественные IP-адреса и переключаться на обычный IP-адрес в качестве прокси-доступа, когда IP-адрес заблокирован.
Как построить пул прокси-IP, в интернете есть много решений, потому что качество IP у этого решения не очень, поэтому я не пробовал. Если вы хотите играть, вы можете самостоятельно создать пул IP-адресов по схеме пула IP-прокси в Интернете. Это почти равносильно тому, чтобы зайти на общедоступный веб-сайт IP-прокси, просканировать все IP-адреса, сохранить их в своем собственном пуле IP-прокси (который может быть базой данных или Redis), а затем написать скрипт для регулярного мониторинга того, являются ли эти IP-адреса нормальными, если они являются нормальными, кладите их на пул прокси, иначе он выбраковывается из пула прокси.
Обычно используемые IP-агенты, такие какБыстрый агент, который поддерживает покупку определенного количества IP-адресов прокси. Переключение IP-адреса уменьшает количество IP-адресов, которые могут использоваться одним. После теста выяснилось, что качество IP достаточно высокое. Но это ограниченное количество не соответствует потребностям нашего бизнеса.
Вы также можете использовать некоторые IP-агенты в режиме туннельной связи, то есть IP-адрес не ограничен, и для доступа используется туннель, и агент перенаправляет ваш запрос. Такие агенты, какАгент слоненка. Однако IP-адрес агента Xiaoxiang носит общий характер, это также может быть связано со спецификой нашего бизнеса, и IP-адрес Xiaoxiang не очень полезен для нас.
В итоге мы использовалиScripingHub, используя Crawlera для предоставления прокси-сервисов. Качество прокси на удивление высокое и стабильное. Поскольку это иностранный агент, при относительно достаточном бюджете можно использовать этот тип агента. (около 349 долларов в месяц)
проверяющий код
Проверочный код — один из самых распространенных методов в антикраулинговой обработке, когда я впервые столкнулся с такой ситуацией, тоже ломал голову, как взломать проверочный код. Понятно, что в настоящее время используется зрелая технология OCR, но она очень громоздка в использовании, а частота отказов довольно высока.Даже если код подтверждения взломан, код подтверждения все равно будет отображаться в последующих запросах, а OCR Алгоритм также очень дорог для определения кода подтверждения, это снизит эффективность сканирования.
Поскольку проверочный код не может быть эффективно взломан, есть ли другой способ? Ответ определенно да. Метод, используемый позже, намного проще и эффективнее. В классе промежуточного программного обеспечения запроса определите, является ли страница кодовой страницей проверки. Если да, напрямую измените IP-запрос прокси-сервера. С Crawlera просто сделайте еще один запрос.
Взлом проверочного кода занимает много времени и сил. Смена IP проста и эффективна, рекомендуется.
Scrapy Redis
Scrapy Redis используется для создания распределенных сканеров. Это эквивалентно хранению ссылок для сканирования в очереди Redis. Несколько сценариев сканера можно открыть на разных серверах, чтобы использовать очередь Redis для достижения цели распределенного сканирования.
Переключиться на Scrapy Redis тоже очень просто: класс паука наследует RedisSpider, а ключ redis_key добавляется в класс краулера для указания имени очереди. Удалите start_url. Добавьте необходимую конфигурацию Scrapy Redis и информацию о подключении Redis в файл конфигурации.
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
SCHEDULER_PERSIST = True
REDIS_HOST =
REDIS_PORT =
REDIS_PARAMS = {
'db': '',
'password':
}
Ссылка на документацию:Начало работы со Scrapy-Redis
Scrapy Crawlera
Crawlera — это сторонняя платформа, которая использует пул IP-адресов прокси для распределенных загрузок. Наш онлайн-бизнес использует этот прокси, который очень стабилен и почти никогда не блокируется или не имеет доступа. цена немного дороже
официальная документация scrapy-crawlera
ScrapingHub Crawlera Введение и тариф
Документация по API ScrapingHub Crawlera
Советы
Xpath Helper
Xpath Helper — это небольшой подключаемый модуль для браузера, который позволяет нам напрямую вводить выражения Xpath на веб-страницах, чтобы проверить, являются ли выражения, которые мы пишем, правильными.
Scrapy Shell
Оболочка Scrapy также является одним из инструментов отладки, предоставляемых scrapy. Он может легко открыть веб-страницу, указанную нами в командной строке, а затем ввести соответствующий код для отладки содержимого страницы.
Суммировать
Вышеизложенное составляет почти все содержание этой статьи.В нем кратко изложены пути обучения, практические достижения и некоторые советы по повышению эффективности работы для начинающих поисковых роботов Python.Конечно, в реальном рабочем приложении знания, которые необходимо изучить, более чем эти.Есть еще много, если вы хотите играть в нее, вы должны продолжать учиться, исследовать и пробовать.
Пока это только верхушка айсберга, и в будущем предстоит узнать больше.
взаимное поощрение.