python Scrapy获取了src图片链接,怎么将图片保存本地
时间: 2024-10-25 09:13:24 浏览: 10
在Python的Scrapy框架中,一旦获取到HTML页面上的图片链接(通常位于`src`属性),你可以使用`Item pipelines`来下载并保存这些图片。以下是基本步骤:
1. 定义`DownloaderMiddleware`以解析响应并找到图片链接[^1]。这可以通过解析CSS选择器或者XPath表达式来完成。
```python
def parse_img(response):
img_links = response.css('img::attr(src)').getall()
yield { 'image_urls': img_links }
```
2. 创建一个`Pipeline`来下载图片。这里我们可以使用`Scrapy`内置的`FilesPipeline`,但你可能需要自定义以支持特定的存储路径。
```python
class ImageSavingPipeline:
IMAGES_STORE = "path/to/images/folder"
def process_item(self, item, spider):
for image_url in item['image_urls']:
filename = name_from_url(image_url)
with open(os.path.join(self.IMAGES_STORE, filename), 'wb') as f:
f.write(requests.get(image_url).content)
return item
```
3. 在`settings.py`中启用这个管道并设置`IMAGES_STORE`变量。
```python
ITEM_PIPELINES = {
'your_project.pipelines.ImageSavingPipeline': 300,
}
```
这样,当Scrapy爬虫执行时,它会自动下载图片并保存到你指定的本地目录中。记得替换`"path/to/images/folder"`为你实际的图片保存路径。
阅读全文