用python爬取某个图片网站的图片
1、爬取单张图片
# 爬取单张图片
import requests # 导入requests库url = "https://scpic.chinaz.net/files/pic/pic9/202112/hpic4875.jpg" # 图片地址
response = requests.get(url) # 获取图片
with open("img/test1.jpg", "wb") as f: # wb:写入二进制文件f.write(response.content) # 写入图片
print("图片下载完成")
2、爬取批量图片
# 爬取批量图片
import requests # 导入requests库
import os # 导入os库
from bs4 import BeautifulSoup # 从bs4库中导入BeautifulSoupname_path = 'img2'
if not os.path.exists(name_path): # 判断文件夹是否存在os.mkdir(name_path) # 创建文件夹def getUrl():url = "https://sc.chinaz.com/tupian/gudianmeinvtupian.html" # 图片地址response = requests.get(url)img_txt = BeautifulSoup(response.content, "html.parser") # 解析网页find = img_txt.find("div", attrs={'class': 'tupian-list com-img-txt-list'}) # 查找图片find_all = find.find_all("div", attrs={'class': 'item'}) # 查找所有图片for i in find_all:url = 'https:' + i.find('img').get('data-original') # 获取图片地址name = i.find('a').text # 获取图片名字# print(name, url)try:getImg(url, name) # 调用getImg方法except: # 相当于java中的catchprint("下载失败");continue # 如果下载失败,跳过def getImg(ImageUrl, ImageName):response = requests.get(ImageUrl).content # 获取图片with open(f'{name_path}/{ImageName}.jpg', 'wb') as f: # 保存图片,wb表示写入二进制文件f.write(response)print(ImageName, "下载完成")if __name__ == '__main__':getUrl()
3、如果一个网页的图片很多,可以进行分页爬取
# 分页爬取图片
import requests # 导入requests库
import os # 导入os库
from bs4 import BeautifulSoup # 从bs4库中导入BeautifulSoupname_path = 'img2'
if not os.path.exists(name_path): # 判断文件夹是否存在os.mkdir(name_path) # 创建文件夹Sum = 0 # 用于记录下载的图片数量def getUrl(num):if num == '1': # 第一页特殊处理url = "https://sc.chinaz.com/tupian/gudianmeinvtupian.html"else:url = f"https://sc.chinaz.com/tupian/gudianmeinvtupian_{num}.html" # 图片地址response = requests.get(url)img_txt = BeautifulSoup(response.content, "html.parser") # 解析网页find = img_txt.find("div", attrs={'class': 'tupian-list com-img-txt-list'}) # 查找图片find_all = find.find_all("div", attrs={'class': 'item'}) # 查找所有图片for i in find_all:url = 'https:' + i.find('img').get('data-original') # 获取图片地址name = i.find('a').text # 获取图片名字# print(name, url)try:getImg(url, name) # 调用getImg方法except: # 相当于java中的catchprint("下载失败");continue # 如果下载失败,跳过def getImg(ImageUrl, ImageName):response = requests.get(ImageUrl).content # 获取图片with open(f'{name_path}/{ImageName}.jpg', 'wb') as f: # 保存图片,wb表示写入二进制文件f.write(response)print(ImageName, "下载完成")global SumSum += 1if __name__ == '__main__':num = input_num = input("请输入要爬取的总页数:[1-7]\n")if (int(num) > 7):print("输入有误,最大为7")exit()else:for i in range(1, int(num) + 1):getUrl(num)print(f"第{i}页爬取完成")print(f"共下载{Sum}张图片")
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
