Scrapy怎么用管道将爬取到的图片src链接下载保存本地
时间: 2024-10-25 10:13:44 浏览: 20
scrapy爬取cosplay图片并保存到本地指定文件夹
在Scrapy中,你可以使用`Pipelines`来处理爬取的数据,包括下载图片并保存到本地。以下是设置图片下载管道的一个示例:
1. **配置Pipeline**[^1]:
在`settings.py`文件中,添加或更新`ITEM_PIPELINES`设置以启用图片下载管道:
```python
ITEM_PIPELINES = {
'your_project_name.pipelines.ImageDownloadPipeline': 300,
}
```
其中,`ImageDownloadPipeline`是你自定义的下载图片的类名。
2. **编写ImageDownloadPipeline**[^2]:
创建一个名为`pipelines.py`的新文件,定义`ImageDownloadPipeline`:
```python
from scrapy.exceptions import DropItem
from scrapy.pipelines.images import ImagesPipeline
from urllib.parse import urlparse
class ImageDownloadPipeline(ImagesPipeline):
def get_media_requests(self, item, info):
if 'img_url' in item:
yield scrapy.Request(item['img_url'])
def download_item(self, response, item, info):
img_url = response.url
parsed_img_url = urlparse(img_url)
filename = parsed_img_url.path.split('/')[-1]
with open(f'saved_images/{filename}', 'wb') as f:
f.write(response.body)
if not filename.lower().endswith(('.jpg', '.jpeg', '.png', '.gif')):
raise DropItem("Invalid image format")
return item
```
这个管道会在下载每个图像URL时,解析URL获取文件名,然后将响应体保存到本地`saved_images`目录下的相应文件名中。
阅读全文