🌊前言
Code皮皮虾 一个沙雕而又有趣的憨憨少年,和大多数小伙伴们一样喜欢听歌、游戏,当然除此之外还有写作的兴趣,emm…,日子还很长,让我们一起加油努力叭🌈
👉话不多说,直达底部有粉丝专享福利!!!
先给大家声明一下,本次爬虫仅为入门实战,爬取对象为彼岸图网,该网站图片尽为4k,但博主目前还爬不出来,爬取图的分辨率大概都为1202✖️676,日后如果博主能够爬取出来,一定分享给大家!
本次爬取采用的是requests+BeautifulSoup,如果对BeautifulSoup还不熟悉的小伙伴可参考我下面这篇文章
Beautiful快速入门教程
1、爬取结果
这里我只爬取的3页图片,小伙伴们可以爬取更多图片
2、网页查看
可以看见,如下有着很多页数的图片,不要着急,待会我们会实现多页爬取功能
不同页数的请求链接分析
另外,由于当前页中的图片分辨率没有其详情页(也就是点击图片进去的页面)分辨率高,
所以咋们还是获取详情页中图片比较好一点
话不多说,咋们直接上代码分析
3、完整代码及注释分析
import requests
from bs4 import BeautifulSoup
import os
#请求头信息
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"
}
#找到并保存图片
def download(path,data):
#参考图片辅助分析——图1,之后我就直接说参考图几了,小伙伴们注意点喽
ul = data.find(class_="slist").find_all("li")
#遍历li标签
for li in ul:
#使用BeautifulSoup进行解析
li_data = BeautifulSoup(str(li), "html.parser")
#参考图2
#详情页url,注意获取的url不是全路径,我们还要拼接下前面的域名
page_url = "http://pic.netbian.com/" + li_data.find("a")['href']
#图片名称
title = li_data.find("img")['alt']
#对详情页发起请求
page_data = requests.get(url=page_url, headers=headers)
#解析
response_data = BeautifulSoup(page_data.text, "html.parser")
#获取详情页图片url,参考图3,注意拼接域名
img_url = "http://pic.netbian.com" + response_data.find(class_="photo-pic").find("img")['src']
#对图片URL发起请求 注意: .content使用二进制数据,不使用就会报错
img_res = requests.get(url=img_url, headers=headers).content
#保存图片
with open(path + "/" + title + ".jpg", "wb") as f:
print("正在保存:"+title)
f.write(img_res)
#开始
if __name__ == '__main__':
#定义保存文件夹路径
path = "./图片"
#如果不存在
if not os.path.exists(path):
#创建该文件夹
os.mkdir(path)
#多页爬取,这里爬取的是3页
for i in range(1,4):
#这里我们做精细一点,再对图片进行不同页数的区分
data_path = path + "/" + str(i)
if not os.path.exists(data_path):
os.mkdir(data_path)
#第一页比较特殊,我们进行if判断
if i == 1:
url = "http://pic.netbian.com/index.html"
else:
#其他的页数直接拼接就好,注意 i 要为str类型
url = "http://pic.netbian.com/index_"+str(i)+".html"
#发起请求
response = requests.get(url=url, headers=headers)
#注意设置编码,不然都是一堆乱码
response.encoding = 'gbk'
#使用BeautifulSoup进行解析
data = BeautifulSoup(response.text, "html.parser")
#将保存路径和请求后的数据传给 download
download(data_path,data)
3、图片辅助分析
图1
图2
图3
💖福利
公众号干货内容输出,囊括Java、Python爬虫、力扣题解、大厂面试题 四大系列,更有长时间总结的干货资源分享
🌊 Java入门到就业学习路线规划
关注底部公众号回复: Java学习路线,即可领取全套资料
🌊 小白快速入门Python爬虫路线
关注底部公众号回复: 爬虫学习路线,即可领取全套资料