- 就是突然想玩一下
- 这里是一个下载网页内图片的例子
- 环境 Python3.7
需首先安装
pip install lxml -i https://mirrors.aliyun.com/pypi/simple
# from urllib.request import urlretrieve # 第一种方法
import requests # 第二种方法
from bs4 import BeautifulSoup
'''
If the target directory already exists, raise an OSError if exist_ok is False. Otherwise no exception is raised.
This is recursive. 如果已存在要创建的文件夹,则会报错,除非使用了exist_ok=True
'''
os.makedirs('img', exist_ok=True) #
#IMG_URL = 'https://www.baidu.com/img/sug_bd.png'
# urlretrieve(IMG_URL, './img/img1.png') # 从哪里来 放到哪里去 我的有SSL报错,就不用这个了!
# 第二种 先全部下载好,放到内存。全部下载好再从内存拷贝到硬盘。实测可以下载下来,但显然也不推荐
# r = requests.get(IMG_URL)
# with open('img/img.png', 'wb') as f: # wb write binary
# f.write(r.content)
URL = 'https://morvanzhou.github.io/'
html = requests.get(URL).text
soup = BeautifulSoup(html, 'lxml')
img_ul = soup.find_all('ul', {'id': 'recent-update'})
# print(html)
# print(img_ul)
for ul in img_ul:
imgs = ul.find_all('img') # 找到所有的img tag 对应<img class >
for img in imgs:
src = img['src'] # 找到src 也就是图片src 地址
# print(img) #
print(src)
# 得到具体的图片连接 ,这里使用了教程的主页,表示感谢
# stream=True:时时刻刻下载?
r = requests.get('https://morvanzhou.github.io/' + src, stream=True)
img_name = src.split('/')[-1] # 去掉字符串最后一个/之前的东东,作为文件名
with open('img/'+ img_name, 'wb') as f: # ‘wb’ 以二进制方式写入文件
for chunk in r.iter_content(chunk_size=512): # 离散的下载写入,而不是全部下载到内存之后再保存
f.write(chunk)
print('Saved {}'.format(img_name))
- 可以在img文件夹里面找到下载下来的图片了!其他文件也是类似