使用 scrapy 框架爬取www.runoob.com网页图片
时间: 2023-12-10 21:05:08 浏览: 98
scrapy1.5中文文档
可以使用 Scrapy 框架和 XPath 选择器来爬取 www.runoob.com 网页图片,具体步骤如下:
1. 创建 Scrapy 项目并定义 Item
在命令行中输入以下命令,创建一个名为 `runoob` 的 Scrapy 项目:
```
scrapy startproject runoob
```
然后在 `runoob` 项目文件夹下的 `items.py` 文件中定义 `RunoobItem`,用于存储爬取到的图片信息:
```python
import scrapy
class RunoobItem(scrapy.Item):
image_urls = scrapy.Field()
images = scrapy.Field()
```
2. 创建 Spider 并编写爬虫逻辑
在 `runoob` 项目文件夹下的 `spiders` 文件夹中创建名为 `image_spider.py` 的文件,并编写如下代码:
```python
import scrapy
from runoob.items import RunoobItem
class ImageSpider(scrapy.Spider):
name = 'image_spider'
allowed_domains = ['www.runoob.com']
start_urls = ['https://www.runoob.com/']
def parse(self, response):
item = RunoobItem()
# 提取所有图片链接
item['image_urls'] = response.xpath('//img/@src').extract()
yield item
```
在 `ImageSpider` 中,我们首先定义了爬虫的名称 `name`、允许爬取的域名 `allowed_domains` 和起始爬取的 URL 列表 `start_urls`。然后在 `parse` 方法中使用 XPath 选择器提取页面中所有的图片链接,并将其存储到 `item` 中。最后使用 `yield` 将 `item` 传递给 Scrapy 引擎。
3. 配置 Scrapy Pipeline
在 `runoob` 项目文件夹下的 `settings.py` 文件中,添加如下配置:
```python
ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline': 1}
IMAGES_STORE = 'images/'
```
在这里我们使用 Scrapy 内置的 `ImagesPipeline` 来下载图片,并将下载的图片保存到 `images/` 目录下。
4. 运行爬虫
在命令行中进入 `runoob` 项目文件夹,输入以下命令启动爬虫:
```
scrapy crawl image_spider
```
Scrapy 就会自动爬取 www.runoob.com 页面中的所有图片,并将其下载到 `images/full/` 目录下。
注意:如果运行过程中出现错误,可以尝试安装 Pillow 库(用于处理图片),并重启命令行窗口再次运行爬虫:
```
pip install Pillow
```
阅读全文