前言
使用 Python 爬取猫咪图片,并为猫咪🐱制作千图成像!
爬取猫咪图片
本文使用的 Python 版本是 3.10.0 版本,可直接在官网下载:www.python.org 。
Pythonn 的安装配置过程在此不做详细介绍,网上随意搜都是教程!
1、爬取绘艺素材网站
爬取网站:猫咪图片
首先安装必须的库:
pip install BeautifulSoup4
pip install requests
pip install urllib3
pip install lxml
复制代码
爬取图片代码:
from bs4 import BeautifulSoup
import requests
import urllib.request
import os
# 第一页猫咪图片网址
url = 'https://www.huiyi8.com/tupian/tag-%E7%8C%AB%E5%92%AA/1.html'
# 图片保存路径,这里 r 表示不转义
path = r"/Users/lpc/Downloads/cats/"
# 判断目录是否存在,存在则跳过,不存在则创建
if os.path.exists(path):
pass
else:
os.mkdir(path)
# 获得所有猫咪图片网页地址
def allpage():
all_url = []
# 循环翻页次数 20 次
for i in range(1, 20):
# 替换翻页的页数,这里的 [-6] 是指网页地址倒数第 6 位
each_url = url.replace(url[-6], str(i))
# 将所有获取的 url 加入 all_url 数组
all_url.append(each_url)
# 返回所有获取到的地址
return all_url
# 主函数入口
if __name__ == '__main__':
# 调用 allpage 函数获取所有网页地址
img_url = allpage()
for url in img_url:
# 获得网页源代码
requ = requests.get(url)
req = requ.text.encode(requ.encoding).decode()
html = BeautifulSoup(req, 'lxml')
# 添加一个 url 数组
img_urls = []
# 获取 html 中所有 img 标签的内容
for img in html.find_all('img'):
# 筛选匹配 src 标签内容以 http 开头,以 jpg 结束
if img["src"].startswith('http') and img["src"].endswith("jpg"):
# 将符合条件的 img 标签加入 img_urls 数组
img_urls.append(img)
# 循环数组中所有 src
for k in img_urls:
# 获取图片 url
img = k.get('src')
# 获取图片名称,强制类型转换很重要
name = str(k.get('alt'))
type(name)
# 给图片命名
file_name = path + name + '.jpg'
# 通过图片 url 和图片名称下载猫咪图片
with open(file_name, "wb") as f, requests.get(img) as res:
f.write(res.content)
# 打印爬取的图片
print(img, file_name)
复制代码
📢 注意: 以上代码无法直接复制运行,需要修改下载图片路径:/Users/lpc/Downloads/cats
,请修改为读者本地的保存路径!
爬取成功:
共爬取 346 张猫咪图片!
2、爬取 ZOL 网站
爬取 ZOL 网址:萌猫
爬取代码:
import requests
import time
import os
from lxml import etree
# 请求的路径
url = 'https://desk.zol.com.cn/dongwu/mengmao/1.html'
# 图片保存路径,这里 r 表示不转义
path = r"/Users/lpc/Downloads/ZOL/"
# 这里是你要保存的路径位置 前面的r 表示这段不转义
if os.path.exists(path): # 判断目录是否存在,存在则跳过,不存在则创建
pass
else:
os.mkdir(path)
# 请求头
headers = {"Referer": "Referer: http://desk.zol.com.cn/dongman/1920x1080/",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36", }
headers2 = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0", }
def allpage(): # 获得所有网页
all_url = []
for i in range(1, 4): # 循环翻页次数
each_url = url.replace(url[-6], str(i)) # 替换
all_url.append(each_url)
return all_url # 返回地址列表
# TODO 获取到Html页面进行解析
if __name__ == '__main__':
img_url = allpage() # 调用函数
for url in img_url:
# 发送请求
resq = requests.get(url, headers&#