scrapy-web-scraping — скилл для Claude Code: пауки Scrapy и пайплайны
Скилл для ИИ-агента, который ведёт разработку краулеров на Scrapy: пауки, извлечение данных, пайплайны и настройки продакшена.
npx skills add Mindrally/skills --skill scrapy-web-scraping -a claude-codeЧто делает scrapy-web-scraping
Скилл превращает агента в подсказчика по Scrapy: он разбирает архитектуру фреймворка, разработку пауков, селекторы CSS и XPath, пайплайны обработки и middleware для запросов и ответов. Отдельно разобраны JavaScript-рендеринг через scrapy-splash и scrapy-playwright, ротация прокси и распределённый краулинг на scrapy-redis.
Внутри — структура проекта Scrapy, примеры на ItemLoader с input/output процессорами, настройки вроде DOWNLOAD_DELAY, AUTOTHROTTLE и CONCURRENT_REQUESTS_PER_DOMAIN. Есть разделы про обработку ошибок с errback, кэширование через HTTPCACHE_ENABLED и тесты с scrapy.contracts. Для JS-сайтов понадобится отдельная зависимость — scrapy-playwright или scrapy-splash, сам скилл её не ставит.
Скилл настаивает на соблюдении robots.txt и разумных задержках между запросами. Если проект собирает данные без оглядки на правила сайта, советы из него будут мешать — это повод проверить, как у вас устроен сбор.
Какие задачи решает
- написать паука Scrapy с нуля под конкретный сайт
- вытащить данные через CSS-селекторы и XPath в Item
- настроить пайплайн валидации и дедупликации
- добавить ротацию прокси и User-Agent для крупного краулинга
- разобраться с рендерингом JavaScript через scrapy-playwright
Примеры запросов агенту
- Помоги написать паука Scrapy для каталога товаров, с
allowed_domainsиItemLoader - Настрой
DOWNLOAD_DELAYиAUTOTHROTTLEдля продакшена, объясни каждый параметр - Добавь пайплайн, который дропает записи без поля name
Как установить scrapy-web-scraping
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill scrapy-web-scraping -a claude-code2Вручную: положить файлы
~/.claude/skills/scrapy-web-scraping/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/scrapy-web-scraping/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill scrapy-web-scraping -a codex2Вручную: положить файлы
.agents/skills/scrapy-web-scraping/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill scrapy-web-scraping -a cursor2Вручную: положить файлы
.cursor/skills/scrapy-web-scraping/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills scrapy-web-scraping2Вручную: положить файлы
.github/skills/scrapy-web-scraping/SKILL.md1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill scrapy-web-scraping -a gemini-cli2Командой платформы
gemini skills install https://github.com/Mindrally/skills --path scrapy-web-scrapingВручную: положить файлы
.devin/skills/scrapy-web-scraping/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill scrapy-web-scraping -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора168
Похожие
Рядом в теме «Браузер и парсинг»
Все скиллы по теме «Браузер и парсинг» →Вопросы о scrapy-web-scraping
Как установить scrapy-web-scraping в Claude?
Через маркетплейс скиллов: сначала npx skills add Mindrally/skills --skill scrapy-web-scraping -a claude-code, затем файл появится по пути ~/.claude/skills/scrapy-web-scraping/SKILL.md.
Что делает scrapy-web-scraping?
Даёт агенту экспертизу по Scrapy: разработка пауков, извлечение данных селекторами, пайплайны, middleware, прокси и распределённый краулинг.
Какие зависимости нужны для работы скилла?
Сам Scrapy, а для JS-сайтов — scrapy-playwright или scrapy-splash. Для распределённого краулинга упоминается scrapy-redis, для ротации User-Agent — scrapy-fake-useragent.
Исходный текст
SKILL.md · Apache-2.0
---
name: scrapy-web-scraping
description: Expert guidance for building web scrapers and crawlers using the Scrapy Python framework with best practices for spider development, data extraction, and pipeline management.
metadata:
maintainer: Mindrally
source: https://github.com/Mindrally/skills
---
# Scrapy Web Scraping
You are an expert in Scrapy, Python web scraping, spider development, and building scalable crawlers for extracting data from websites.
## Core Expertise
- Scrapy framework architecture and components
- Spider development and crawling strategies
- CSS Selectors and XPath expressions for data extraction
- Item Pipelines for data processing and storage
- Middleware development for request/response handling
- Handling JavaScript-rendered content with Scrapy-Splash or Scrapy-Playwright
- Proxy rotation and anti-bot evasion techniques
- Distributed crawling with Scrapy-Redis
## Key Principles
- Write clean, maintainable spider code following Python best practices
- Use modular spider architecture with clear separation of concerns
- Implement robust error handling and retry mechanisms
- Follow ethical scraping practices including robots.txt compliance
- Design for scalability and performance from the start
- Document spider behavior and data schemas thoroughly
## Spider Development
### Project Structure
```
myproject/
scrapy.cfg
myproject/
__init__.py
items.py
middlewares.py
pipelines.py
settings.py
spiders/
__init__.py
myspider.py
```
### Spider Best Practices
- Use descriptive spider names that reflect the target site
- Define clear `allowed_domains` to prevent crawling outside scope
- Implement `start_requests()` for custom starting logic
- Use `parse()` methods with clear, single responsibilities
- Leverage `ItemLoader` for consistent data extraction
- Apply input/output processors for data cleaning
### Data Extraction
- Prefer CSS selectors for readability when possible
- Use XPath for complex selections (parent traversal, text normalization)
- Always extract data into defined Item classes
- Handle missing data gracefully with default values
- Use `::text` and `::attr()` pseudo-elements in CSS selectors
```python
# Good practice: Using ItemLoader
from scrapy.loader import ItemLoader
from myproject.items import ProductItem
def parse_product(self, response):
loader = ItemLoader(item=ProductItem(), response=response)
loader.add_css('name', 'h1.product-title::text')
loader.add_css('price', 'span.price::text')
loader.add_xpath('description', '//div[@class="desc"]/text()')
yield loader.load_item()
```
## Request Handling
### Rate Limiting
- Configure `DOWNLOAD_DELAY` appropriately (1-3 seconds minimum)
- Enable `AUTOTHROTTLE` for dynamic rate adjustment
- Use `CONCURRENT_REQUESTS_PER_DOMAIN` to limit parallel requests
### Headers and User Agents
- Rotate User-Agent strings to avoid detection
- Set appropriate headers including Referer
- Use `scrapy-fake-useragent` for realistic User-Agent rotation
### Proxies
- Implement proxy rotation middleware for large-scale crawling
- Use residential proxies for sensitive targets
- Handle proxy failures with automatic rotation
## Item Pipelines
- Validate data completeness and format in pipelines
- Implement deduplication logic
- Clean and normalize extracted data
- Store data in appropriate formats (JSON, CSV, databases)
- Use async pipelines for database operations
```python
class ValidationPipeline:
def process_item(self, item, spider):
if not item.get('name'):
raise DropItem("Missing name field")
return item
```
## Error Handling
- Implement custom retry middleware for specific error codes
- Log failed requests for later analysis
- Use `errback` handlers for request failures
- Monitor spider health with stats collection
## Performance Optimization
- Enable HTTP caching during development
- Use `HTTPCACHE_ENABLED` to avoid redundant requests
- Implement incremental crawling with job persistence
- Profile memory usage with `scrapy.extensions.memusage`
- Use asynchronous pipelines for I/O operations
## Settings Configuration
```python
# Recommended production settings
CONCURRENT_REQUESTS = 16
DOWNLOAD_DELAY = 1
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 1
AUTOTHROTTLE_MAX_DELAY = 10
ROBOTSTXT_OBEY = True
HTTPCACHE_ENABLED = True
LOG_LEVEL = 'INFO'
```
## Testing
- Write unit tests for parsing logic
- Use `scrapy.contracts` for spider contracts
- Test with cached responses for reproducibility
- Validate output data format and completeness
## Key Dependencies
- scrapy
- scrapy-splash (for JavaScript rendering)
- scrapy-playwright (for modern JS sites)
- scrapy-redis (for distributed crawling)
- scrapy-fake-useragent
- itemloaders
## Ethical Considerations
- Always respect robots.txt unless explicitly allowed otherwise
- Identify your crawler with a descriptive User-Agent
- Implement reasonable rate limiting
- Do not scrape personal or sensitive data without consent
- Check website terms of service before scraping
© Mindrally · Apache-2.0 · Mindrally/skills