Scrapy网页抓取框架教程

Scrapy 是一个用于 Python 的快速、高级的网页抓取和网页爬虫框架,用于抓取网站并从页面中提取结构化数据。它可以用于广泛的应用场景,如数据挖掘、信息处理或历史存档。
安装 Scrapy
首先,你需要确保 Python 和 pip 已经安装在你的系统上。然后,你可以通过以下命令安装 Scrapy:
pip install scrapy
创建一个新的 Scrapy 项目
使用 Scrapy 创建一个新项目非常简单。只需运行以下命令:
scrapy startproject myproject
这将在当前目录下创建一个名为 myproject
的新目录,其中包含 Scrapy 项目的基本结构。
项目结构
一个典型的 Scrapy 项目结构如下:
myproject/
scrapy.cfg # 部署配置文件
myproject/ # 项目的 Python 模块
__init__.py
items.py # 项目项定义文件
middlewares.py # 项目中间件文件
pipelines.py # 项目管道文件
settings.py # 项目设置文件
spiders/ # 爬虫目录
__init__.py
myspider.py # 示例爬虫文件
编写一个简单的爬虫
在 spiders
目录下创建一个新的 Python 文件,例如 myspider.py
,并编写以下代码:
import scrapy
class MySpider(scrapy.Spider):
name = "myspider"
start_urls = [
'http://example.com',
]
def parse(self, response):
for quote in response.css('div.quote'):
yield {
'text': quote.css('span.text::text').get(),
'author': quote.css('span small::text').get(),
'tags': quote.css('div.tags a.tag::text').getall(),
}
运行爬虫
要运行你的爬虫,可以使用以下命令:
scrapy crawl myspider
保存抓取的数据
你可以将抓取的数据保存到文件中。例如,将数据保存为 JSON 文件:
scrapy crawl myspider -o output.json
使用 Items 和 Pipelines
Scrapy 提供了 Items
和 Pipelines
来帮助你更结构化地处理数据。
定义 Item
在 items.py
中定义一个 Item
:
import scrapy
class MyprojectItem(scrapy.Item):
text = scrapy.Field()
author = scrapy.Field()
tags = scrapy.Field()
使用 Pipeline
在 pipelines.py
中定义一个 Pipeline
来处理抓取的数据:
class MyprojectPipeline:
def process_item(self, item, spider):
# 这里可以对 item 进行处理
return item
然后在 settings.py
中启用这个 Pipeline:
ITEM_PIPELINES = {
'myproject.pipelines.MyprojectPipeline': 300,
}
中间件
Scrapy 还允许你使用中间件来修改请求和响应。你可以在 middlewares.py
中定义中间件,并在 settings.py
中启用它们。
配置
Scrapy 的配置主要在 settings.py
文件中进行。你可以在这里设置并发请求数、下载延迟、用户代理等。
扩展 Scrapy
Scrapy 是一个高度可扩展的框架。你可以通过编写扩展、中间件、管道等来定制 Scrapy 的行为。
总结
Scrapy 是一个功能强大且灵活的爬虫框架,适用于各种网页抓取任务。通过掌握其基本用法和高级特性,你可以高效地抓取和处理网页数据。