基于 Scrapy 的论坛帖子内容抓取实战教程
简介
本文旨在介绍如何使用 Python 的 Scrapy 框架快速构建一个网络爬虫,用于抓取论坛帖子的标题、URL 及正文内容。内容涵盖环境准备、项目结构、Spider 编写、数据解析、管道处理及中间件配置等核心环节。
一、环境准备
1. 安装依赖
确保已安装 Python 3.x 环境。推荐使用虚拟环境管理工具(如 venv 或 conda)隔离依赖。
python -m venv scrapy_env
source scrapy_env/bin/activate # Windows: scrapy_env\Scripts\activate
pip install scrapy
2. 创建项目
在项目根目录下执行以下命令初始化 Scrapy 工程:
scrapy startproject miao
这将生成如下目录结构:
miao/: 项目主目录items.py: 定义数据模型middlewares.py: 定义请求/响应中间件pipelines.py: 定义数据处理管道settings.py: 全局配置文件spiders/: 存放 Spider 脚本
二、编写 Spider
在 spiders 文件夹下新建 nga_spider.py 文件。
1. 基础结构
定义继承自 scrapy.Spider 的类,指定名称和起始 URL。
import scrapy
from scrapy import Selector, Request
class NgaSpider(scrapy.Spider):
name = "nga_spider"
allowed_domains = ["bbs.ngacn.cc"]
start_urls = [
"http://bbs.ngacn.cc/thread.php?fid=406",
]
2. 页面解析
使用 parse 方法处理初始页面的 HTML。Scrapy 默认调用此函数解析 start_urls 返回的内容。
def parse(self, response):
selector = Selector(response)
# 提取 class 为 topic 的链接列表
content_list = selector.xpath("//*[@class='topic']")
for content content_list:
title = content.xpath().get()
url = .start_urls[].split()[] + content.xpath().get()
()
Request(url=url, callback=.parse_topic)


