Python爬虫120|5000张高清壁纸大图(手机用),用Python在法律的边缘又试探了一把
昨日下了直播,橡皮擦在浏览网页,忽然发现一张手机壁纸不错,既然来都来了,不试一把也不合适。Python 爬虫 120 例,已完成文章清单
- 10 行代码集 2000 张美女图,Python 爬虫 120 例,再上征途
- 通过 Python 爬虫,发现 60%女装大佬游走在 cosplay 领域
- Python 千猫图,简单技术满足你的收集控
- 熊孩子说“你没看过奥特曼”,赶紧用 Python 学习一下,没想到
- 技术圈的【多肉小达人】,一篇文章你就能做到
- 我用 Python 连夜离线了 100G 图片,只为了防止网站被消失
- 对 Python 爬虫编写者充满诱惑的网站,《可爱图片网》,瞧人这网站名字起的
爬取目标
图片首页地址为:https://www.3gbizhi.com/sjbz/index_1.html,该网站壁纸质量不错,清晰度也非常好,重点是对爬虫也非常友善,试了几次,爬取速度都可以,因此大家应该把该网站用于学习目的。
使用的 Python 模块
本次使用
requests
,re
,threading
。threading
模块将在本案例中,进行分页多线程抓取。重点学习内容
爬虫基本套路
多线程图片爬虫
通过小图获取大图
列表页分析
分析列表的时候发现,该网站可以直接通过,修改列表页图片地址获取高清地址,有这样的技巧存在,就能大幅度减少爬虫代码编写量,具体如下。
通过浏览器检查图片标签,获得如下图所示图片地址,即
https://pic.3gbizhi.com/2020/1214/20201214112632727.jpg.476.780.jpg
。在浏览器中打开该地址,得到一张图片预览地址,去除
.476.780
相关内容,直接获取到大图地址,即 https://pic.3gbizhi.com/2020/1214/20201214112632727.jpg
。![Python爬虫120|5000张高清壁纸大图(手机用),用Python在法律的边缘又试探了一把](https://img.it610.com/image/info8/3d66576be6504a36b7f314975f762d7c.jpg)
文章图片
既然可以通过列表页直接获取大图地址,那针对该网站的爬取,直接通过列表页即可实现。下面就可以针对分析进行需求的整理工作。
整理需求如下
- 爬取目标网站列表页;
- 分析图片大图链接;
- 请求图片,保存图片。
编写图片地址提取代码,该代码的重点在于,需要将图片地址后面的缩放进行处理,即下述代码
url[:url.find('jpg')+3]
部分内容,下文中的正则表达式部分需要特别注意,在网站上右键查看的源码与服务器返回的代码存在差异,测试时需针对服务器返回进行匹配。下文代码中
save_image
在后文涉及。import requests
import re
import threadingheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1;
Win64;
x64) "}# 循环获取 URL
def get_image(base_url):res = requests.get(url=base_url, headers=headers)if res is not None:
html = res.text
# 正则表达式提取数据
pattern = re.compile(
'
文章图片
此时获取到的就是图片的真实地址,调用
save_image
函数,对远程图片进行存储。其中 title
为图片存储地址。def save_image(url, title):
try:
print(f"{
title} - {
url}")
res = requests.get(url=url, headers=headers)if res is not None:
html = res.contentwith open(f"images/{
title}.jpg", "wb+") as f:
f.write(res.content)
except Exception as e:
print(e)
最后使用多线程进行爬取,开启 5 个线程,当所有线程结束运行时,停止整体代码。
if __name__ == '__main__':
num = 0
# 最多开启5个线程
semaphore = threading.BoundedSemaphore(5)
for index in range(189):
t = threading.Thread(target=get_image, args=(
f"https://www.3gbizhi.com/sjbz/index_{
index}.html",))
t.start()
while threading.active_count() != 1:
pass
else:
print('所有线程运行完毕')
运行我们的爬虫程序,会看到图片批量的存储到了本地。
抓取结果展示时间 抓取到非常多优质的手机壁纸,换到手机不能用,都用不完了。
完整代码下载地址:https://codechina.csdn.net/hihell/python120,NO8。
【Python爬虫120|5000张高清壁纸大图(手机用),用Python在法律的边缘又试探了一把】代码编写过程中,顺手爬取了一堆图片,可以提前预览一波,看看图,在决定是否运行这段代码。
- 3190 张手机壁纸
- 613 张高清手机壁纸
爬取资源仅供学习使用,侵权删。抽奖时间 只要评论数过 100
随机抽取一名幸运读者
奖励 29.9 元《Python 游戏世界》专栏 1 折购买券一份,只需 2.99 元
今天是持续写作的第 169 / 200 天。可以点赞、评论、收藏啦。相关阅读
- 对Python爬虫编写者充满诱惑的网站,《可爱图片网》,瞧人这网站名字起的
- 我用 Python 连夜离线了 100G 图片,只为了防止网站被消失
- 技术圈的【多肉小达人】,一篇文章你就能做到
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)
- 爬虫数据处理HTML转义字符