- Welcome to Grab’s documentation!¶
- Table of Contents¶
- Grab User Manual¶
- Grab::Spider User Manual¶
- API Reference¶
- Indices and tables¶
- Grab — фреймворк для парсинга сайтов¶
- Grab сайты¶
- Документация Grab¶
- Документация Grab:Spider¶
- API¶
- Grab for python 3
- Web-Resources:
- Contribution to Grab project:
- Learning Materials
- Examples of projects using Grab
- Video Lessons
- Publications:
- News
- Development activity
- Talks in grab-users [en]
- Talks in python-grab [ru]
Welcome to Grab’s documentation!¶
Grab is a python framework for building web scrapers. With Grab you can build web scrapers of various complexity, from simple 5-line scripts to complex asynchronous website crawlers processing millions of web pages. Grab provides an API for performing network requests and for handling the received content e.g. interacting with DOM tree of the HTML document.
There are two main parts in the Grab library:
1) The single request/response API that allows you to build network request, perform it and work with the received content. The API is built on top of urllib3 and lxml libraries.
2) The Spider API to build asynchronous web crawlers. You write classes that define handlers for each type of network request. Each handler is able to spawn new network requests. Network requests are processed concurrently with a pool of asynchronous web sockets.
Table of Contents¶
Grab User Manual¶
- Grab Installation
- Installation on Linux
- Installation on Windows
- Installation on MacOS
- Dependencies
- Building test environment
- Run tests
- Github Testing
- Test Coverage
- Linters
- Make a request
- Creating POST requests
- Response Content
- Response Status Code
- GET Request
- POST Request
- PUT Request
- Other Methods
- Grab Config Object
- Grab Instance Cloning
- Network options
- Proxy Options
- Response Processing Options
- Debugging
- Using the logging module
- Logging messages about network request
- Custom headers
- HTTP 301/302 Redirect
- Original and Destination URLs
- Network Errors
- Network Timeout
- Why does encoding matter?
- Encoding Detection Algorithm
- Setting the encoding manually
- Custom Cookies
- Basic Usage
- Proxy List Support
- Automatic Proxy Rotation
- Getting Proxy From Proxy List
- String search
- Regexp Search
- Response Object
- Urllib3 transport
- Use your own transport
Grab::Spider User Manual¶
Grab::Spider is a framework to build well-structured asynchronous web-site crawlers.
- What is Grab::Spider?
- Task Object
- Constructor of Task Class
- Task Object as Data Storage
- Cloning Task Object
- Setting Up Initial Tasks
- Explicit Ways to Add New Task
- Default Grab Instance
- Task Priorities
- Tasks Queue Backends
- Rules of Network Request Handling
- Network Errors
- Handling of Failed Tasks
- Manual Processing of Failed Tasks
- Error Statistics
API Reference¶
Using the API Reference you can get an overview of what modules, classes, and methods exist, what they do, what they return, and what parameters they accept.
Indices and tables¶
© Copyright 2015 – 2023, Gregory Petukhov Revision 35e44c24 .
Versions latest stable v0.6.41-doc Downloads pdf html epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
Grab — фреймворк для парсинга сайтов¶
Документация на русском языке устарела и может содержать ошибки. Пожалуйста, используйте английскую документацию для получения актуальной информации о библиотеке Grab.
Grab — библиотека для работы с сетевыми документами. Основные области использования Grab:
- извлечение данных с веб-сайтов (site scraping)
- работа с сетевыми API
- автоматизация работы с веб-сайтами, например, регистратор профилей на каком-либо сайте
Grab состоит из двух частей:
- Главный интерфейс Grab для создания сетевого запроса и работы с его результатом. Этот интерфейс удобно использовать в простых скриптах, где не нужна большая многопоточность, или непосредственно в python-консоли.
- Интерфейс Spider, позволяющий разрабатывать асинхронные парсеры. Этот интерфейс позволяет, во-первых, более строго описать логику парсера, во-вторых, разрабатывать парсеры с большим числом сетевых потоков.
Grab сайты¶
Документация Grab¶
- Введение в Grab
- Установка библиотеки Grab
- Установка под Linux
- Установка под Windows
- Способы задания настроек
- Клонирование
- Использование logging-системы
- Нумерация запросов
- Сохранение запросов и ответов в файлы
- Настройки
- Изменение HTTP-заголовков
- Настройка User-Agent заголовка
- Настройка Referer заголовка
- Выбор метода
- POST-запрос
- Отправка файлов
- Ограничение тела ответа
- Сжатие ответа
- HTTP-Авторизация
- Работа с pycurl-дескриптором
- 301 и 302 редиректы
- Meta Refresh редиректы
- Для чего нужно знать кодировку
- Алгоритм определения кодировки
- Опция задания кодировки
- Настройка кукисов
- Работа с файлом кукисов
- Сетевые ошибки
- Таймауты
- Режим повторных запросов
- Настройка прокси-сервера
- Работа со списками прокси
- Объект Reponse
- Используемые библиотеки
- Структура расширений
- Поддержка python 3
- Автоматическая обработка форм
- Отправка формы
- Отправка файлов
- Интерфейс к LXML библиотеке
- DOM-дерево
- XPATH-методы
- CSS-методы
- Обработка исключений
- Поиск строк
- Поиск регулярных выражений
- PyQuery расширение
- BeautifulSoup расширение
- Что такое транспорт
- Транспорт pycurl
- Транспорт urllib
- Транспорт selenium
- Пул заданий
- Блокировка файла
- Логирование Grab-активности в файл
- Фильтрация строк в файле
- Обработка HTML
- Работа с LXML-элементами
- Работа с регулярными выражениями
- Работа с текстом
- Работа с http-заголовками
Документация Grab:Spider¶
Асинхронный модуль для разработки сложных парсеров.
- Что такое Spider
- Способы создания заданий
- initial_urls
- task_generator
- add_task
- yield
- Резюме
- Конструктор Task объекта
- Task-объект как хранилище данных
- Клонирование Task-объекта
- Приоритеты заданий
- Бэкенды хранилищ
- Генератор заданий
- Правила обработки запросов
- Сетевые ошибки
- Повторно выполнение заданий
- Статистика ошибок
- Бэкенды системы кэширования
- Исползование кэша
- Сжатие кэшируемых данных
API¶
Вся нижеследующая информация сгенерирована из комментариев в исходном коде. Поэтому она на английском языке. Документы из раздела API полезны тем, что они показывают описания всех аргументов каждого метода и класса библиотеки Grab.
Grab for python 3
- Extract data from web-site
- Work with web-API
- Automate human-like activity on web-site
Web-Resources:
Contribution to Grab project:
- Write publication about the Grab on your blog or on some pupular discussion board like reddit or hacker news
- Report a bug, describe details
- Create new feature and submit pull-request
- Hire me for web-scraping project getdata.pro
- Just send money
Learning Materials
Examples of projects using Grab
Video Lessons
Publications:
News
Development activity
- 08 January 19:25: Merge pull request #167 from matlex/patch-1
- 08 January 19:15: Update request_headers.rst
- 22 December 13:33: Merge pull request #165 from SpikeVlg/upstream
- 22 December 13:31: Merge pull request #166 from rblack/master
- 22 December 12:34: urllib3 transport proxy auth fix
- 15 December 15:48: Fixed issue #160
- 22 November 19:30: Bump version: 0.6.29 → 0.6.30
- 22 November 19:18: Fix processing of upload data in debug=True mode
- 22 November 19:17: Update default_project files
- 22 November 18:12: Debugging travis error
Talks in grab-users [en]
Talks in python-grab [ru]
- 07 January 22:26 : судьба grab.transport.kit
- 04 January 12:27 : Как остановить всех пауков при первой же ошибке?
- 01 January 20:01 : Не импортируется модуль grab( как исправить?
- 22 December 15:56 : Цитата: «Артём Буданов — НЕ работает! Grigoriy Petukhov — Вам не повезло. «
- 21 December 15:01 : пропускает часть href
- 17 December 10:43 : сервер не реагирует на пост аргументы
- 14 December 09:43 : VPS
- 12 December 20:12 : Grab на андроиде
- 12 December 15:18 : Паук жрёт 100% CPU
- 12 December 08:36 : пожертвование новичкам