我有一批图片的链接存储在json中,我想利用爬虫将他们读取出来并下载图片到本地,代码应该怎么写
时间: 2023-06-12 22:02:46 浏览: 74
你可以使用Python中的requests和os模块来实现爬取图片并下载到本地的功能。具体实现步骤如下:
1. 使用json库读取json文件,得到图片链接列表。
```
import json
with open('image_links.json', 'r') as f:
image_links = json.load(f)
```
2. 遍历图片链接列表,使用requests库下载图片并保存到本地。
```
import requests
import os
for i, link in enumerate(image_links):
response = requests.get(link)
if response.status_code == 200:
with open(f'image_{i}.jpg', 'wb') as f:
f.write(response.content)
print(f'image_{i}.jpg downloaded successfully!')
else:
print(f'image_{i}.jpg download failed!')
```
其中`response.content`是二进制数据,可以直接写入文件。`f.write(response.content)`将二进制数据写入到文件中。
3. 使用os模块创建保存图片的目录。
```
if not os.path.exists('images'):
os.mkdir('images')
os.chdir('images')
```
完整代码:
```
import requests
import os
import json
if not os.path.exists('images'):
os.mkdir('images')
os.chdir('images')
with open('image_links.json', 'r') as f:
image_links = json.load(f)
for i, link in enumerate(image_links):
response = requests.get(link)
if response.status_code == 200:
with open(f'image_{i}.jpg', 'wb') as f:
f.write(response.content)
print(f'image_{i}.jpg downloaded successfully!')
else:
print(f'image_{i}.jpg download failed!')
```
注意:在下载大量图片时,可能会因为网络原因或服务器限制导致部分图片下载失败。可以加入异常处理机制来处理下载失败的情况。