搭建scrapy框架爬取黑马程序员网站所有教师名字、级别、介绍,网址'http://www.itcast.cn/channel/teacher.shtml'
时间: 2025-06-22 18:45:13 浏览: 6
### 使用 Scrapy 框架爬取教师信息
为了实现这一目标,需要按照以下结构化的方式设置项目并编写相应的 Python 代码。
#### 创建 Scrapy 项目
启动一个新的 Scrapy 项目来组织所有的蜘蛛(spiders)、配置文件和其他组件。通过命令行执行如下指令:
```bash
scrapy startproject itcast_spider
cd itcast_spider
```
这会建立一个名为 `itcast_spider` 的目录作为工作空间[^5]。
#### 定义 Item 结构
编辑位于 `mySpider/items.py` 文件内的 `ItcastItem` 类定义,用于描述要提取的数据字段。具体来说就是讲师的名字、职称以及个人简介这三个属性:
```python
import scrapy
class ItcastItem(scrapy.Item):
name = scrapy.Field() # 讲师名字
title = scrapy.Field() # 职称
info = scrapy.Field() # 个人信息介绍
```
此部分已经在项目的初始阶段完成设定[^3]。
#### 编写 Spider 抓取逻辑
接下来,在 `spiders/` 子目录下创建新的 spider 文件 `itcastSpider.py` 并填充必要的抓取逻辑。这里的关键在于定位到包含所需数据的 HTML 元素,并从中抽取有用的内容。基于给定的例子,HTML 片段中的 `<div>` 标签具有特定的 CSS 类名 `.li_txt` ,内部嵌套有 `<h3>`, `<h4>` 和 `<p>` 标签分别对应于讲师的名字、职位和个人说明[^2]。
下面是一个完整的 spider 实现例子:
```python
import scrapy
from ..items import ItcastItem
class TeacherSpider(scrapy.Spider):
name = 'teachers'
allowed_domains = ['itcast.cn']
start_urls = [
'http://www.itcast.cn/channel/teacher.shtml',
]
def parse(self, response):
teachers = response.css('div.li_txt')
for teacher in teachers:
item = ItcastItem()
item['name'] = teacher.xpath('./h3/text()').get().strip()
item['title'] = teacher.xpath('./h4/text()').get().strip()
item['info'] = teacher.xpath('./p/text()').get().strip()
yield item
```
这段脚本首先指定了允许访问的目标域名和起始 URL 。接着实现了 `parse()` 方法遍历页面上每一个符合条件的 div 块,依次读取出其中的文字内容赋值给对应的 item 属性最后返回这些 items 给后续处理管道[^4]。
阅读全文