Первый в Рунете

Практический курс парсинга сайтов
на Python

Максимальное приближение к задачам реального парсинга
Отработка на 13 парсерах разной сложности

Купить

14 Видео

Как анализировать верстку и запросы к сайтам разной сложности. Как писать парсеры

13 Парсеров

Для сайтов разной сложности, которые вы напишете по мере прохождения курса

Что вы получаете

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

Программа курса

То, что нужно начинающему питонисту для начала профессиональной деятельности

  • Основы BeautifulSoup
  • Парсинг табличных данных
  • Работа с пагинацией (2 вида)
  • Чтение и запись данных в CSV
  • Запись данных в PostgreSQL
  • Продвинутые методы работы с BeautifulSoup
  • Парсинг данных, подгружаемых при помощи AJAX (2 видео)
  • Парсинг в несколько процессов
  • Использование прокси
  • Парсинг данных, подгружаемых JQuery
  • Смена User-Agent

Этот курс для вас, если:

Вы проработали хоть какой-нибудь туториал по Python и знаете основы языка (списки, словари, циклы, функции)
На базовом уровне вы знаете HTML
Вы думающий человек, который готов разбираться в своем коде и отрабатывать свои ошибки

Стоимость курса составляет

2940
рублей

Архив с курсом + исходники:
809 Мб
Купить

FAQ

Все делается при помощи библиотек Requests и Beautiful Soup 4, Lxml. Даже парсинг данных, подгружаемых AJAX и JQuery.

Здесь НЕ используются Selenium, Grab, Scrapy и другие средства.

Для Python 3.x

sudo pip3 install requests, beautifulsoup4, lxml

Для Python 2.7

sudo pip install requests, beautifulsoup4, lxml

Для Windows

У вас, скорее всего, в системе только один Python, который вы установили. Поэтому команда:

pip install requests, beautifulsoup4, lxml

Проблема связана с тем, как Windows интерпретирует запятые. По умолчанию для русскоязычных установок разделителем столбцов является точка с запятой, а не запятая, как положено по стандарту.


Вариантов решения я вижу три:

1. Явно указать при записи в CSV-файл параметр delimiter=';'

т.е. общий вид создания объекта для записи строк в CSV-файлы выглядит так:

writer = csv.writer(csvfile, delimiter=';')

2. Изменить глобальные настройки системы Windows для интерпретации запятых и точек с запятой

Windows 7:

Панель управления -> Часы, язык и регион -> Изменение форматов даты, времени и чисел -> Дополнительные параметры

Вкладка "Числа" и затем смотрите пункт "Разделитель элементов списка"


3. Изменить параметры интерпретации разделителей при импорте CSV в самом Excel

  • В меню выберите: Данные - Импорт внешних данных - Импортировать данные.
  • Затем найдите ваш csv-файл и нажмите кнопку "Открыть".
  • Откроется мастер импорта. На втором шаге снимите галку с точки запятой и поставьте галку на запятую
  • На третьем шаге целесообразно выбрать текстовый формат для всех колонок
Это исключение связано с тем, что объект, к атрибуту (свойству или методу) которого вы обращаетесь - "пустой", т.е. относится к типу NoneType. А это, в свою очередь, означает, что функция Beautiful Soup'а ничего по вашим критериям не нашла. Это не обязательно будет связано именно с работой Beautiful Soup'а, но чаще всего "виновником" этого исключения будет именно "Суп".
Посмотрите мое видео на эту тему: Python: работа с ошибками на примере нерабочих парсеров

Чаще всего с этим сталкиваются пользователи Windows, поскольку Windows по умолчанию не отрабатывает кодировку Unicode и использует свою cp1251, а функция open() в Python3 по умолчанию использует переменую среды locale.getpreferredencoding(False)

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

Например, так:

with open(filename, encoding='utf8') as f:

или так:

with open(filename, encoding='utf8', newline='') as f:
параметр newline='' может потребоваться, чтобы отключить замену новых строк.

Для пользователей Ubuntu, Mint, MacOS

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

locale

В зависимости от обстоятельств лечение может быть таким:

В файл .bash_profile/.profile вписываем две строчки:

export LC_ALL=ru_RU.UTF-8
export LANG=ru_RU.UTF-8

Не помогло? Гуглим ошибку применительно к конкретной ОС

Обратной связи НЕ будет

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

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

Все делается через сервис Glopart

Они используют самые распространенные средства оплаты, в том числе: