#Spider 实战:编写爬取逻辑、解析 Response、yield 返回数据
📂 所属阶段:第一阶段 — 初出茅庐(框架核心篇)
🔗 相关章节:创建你的首个工程 · Selector 选择器
#1. 基础 Spider
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['http://example.com']
def parse(self, response):
# 提取数据
for item in response.css('div.item'):
yield {
'title': item.css('h2::text').get(),
'price': item.css('span.price::text').get(),
}
# 翻页
next_page = response.css('a.next::attr(href)').get()
if next_page:
yield scrapy.Request(
response.urljoin(next_page),
callback=self.parse
)#2. 高级 Spider
class AdvancedSpider(scrapy.Spider):
name = 'advanced'
def start_requests(self):
# 自定义起始请求
for page in range(1, 11):
url = f'http://example.com/page/{page}'
yield scrapy.Request(
url,
callback=self.parse,
meta={'page': page}
)
def parse(self, response):
page = response.meta['page']
for item in response.css('div.item'):
yield {
'page': page,
'title': item.css('h2::text').get(),
'url': item.css('a::attr(href)').get(),
}#3. 小结
Spider 三要素:
1. name:爬虫名称
2. start_urls:起始 URL
3. parse():解析方法
核心技巧:
- yield 返回数据
- yield 返回新请求(翻页)
- response.urljoin() 处理相对 URL💡 记住:Spider 是 Scrapy 的核心。掌握它,你就掌握了 80% 的爬虫逻辑。
🔗 扩展阅读

