手机壁纸这东西大家都很熟悉吧,相信不论谁打开手机都希望自己的壁纸是自己喜欢的图片,
但是一张壁纸用久了就会想换一张新鲜感满满的图(当然排除情有独钟的),
但挑选图片的时间总是恒久的,有时长时间的挑选都不一定能选出自己心仪的那一张,还手累
那么咋直接来写个代码,自动下载自己感兴趣类型的手机壁纸
本次内容:python爬取4K超清画质手机壁纸
开发环境敲代码你们不能连敲代码的地方都没有叭👀
- Python 3.8
- Pycharm
- 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
- 点击齿轮, 选择add
- 添加python安装路径
- 选择file(文件) >>> setting(设置) >>> Plugins(插件)
- 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
- 选择相应的插件点击 install(安装) 即可
- 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效
第一个模块是要安装的,不然即使你代码出来了,没有模块它还是会不高兴,会报错的呦,另两个模块是自带的,不需安装
- requests >>> pip install requests 数据请求
- re 正则 解析数据
- os 自动创建文件夹
- 如果安装python第三方模块:
- win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
- 在pycharm中点击Terminal(终端) 输入安装命令
- 安装失败原因:
-
失败一: pip 不是内部命令 解决方法: 设置环境变量
-
失败二: 出现大量报红 (read time out) 解决方法: 因为是网络链接超时, 需要切换镜像源 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/ 豆瓣:http://pypi.douban.com/simple/ 例如:pip3 install -i https://pypi.doubanio.com/simple/ 模块名
-
失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入 解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好 或者你pycharm里面python解释器没有设置好
-
就是去分析我们想要的这些数据内容, 可以从哪里获取 (开发者工具去抓包分析)
通过分析可以知道, 想要获取壁纸原图url >>> 获取每个壁纸详情页url >>> 列表页面获取 壁纸详情页
第二步就是我们的代码实现步骤1. 发送请求, 对于壁纸列表页面发送请求
2. 获取数据, 获取服务器返回的response数据
3. 解析数据, 提取我们想要的 壁纸详情页url
4. 发送请求, 对于 壁纸详情页url 发送请求
5. 获取数据, 获取服务器返回的response数据
6. 解析数据, 提取我们想要图片url以及图片标题
7. 保存数据, 保存本地
8. 多页爬取, 根据壁纸列表页面变化规律去发送请求
代码展示
先来导入我们的数据请求的模块
import requests # pip install requests
在导入正则表达式模块
import re # 内置模块 不需要安装
for page in range(4, 11):
print(f'===================正在爬取第{page}页的数据内容===================')
# 1. 发送请求, 对于壁纸列表页面发送请求
url = f'https://m.bcoderss.com/tag/%e5%8a%a8%e6%bc%ab/page/{page}/'
# headers 请求头 作用就是伪装python代码
# 如果被识别出是爬虫程序 就不会返回数据, 或者返回其他的数据
headers = {
'cookie': 'UM_distinctid=17dffa7aa3a189-048d4b23bef5a4-4303066-1fa400-17dffa7aa3bbfe; Hm_lvt_ce3020881c73bb20f0830ef4ed0a61fb=1640671718; CNZZDATA1278590218=1385918032-1640661155-%7C1640667485; Hm_lpvt_ce3020881c73bb20f0830ef4ed0a61fb=1640676345',
'origin': 'https://m.bcoderss.com',
'referer': url,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
}
response = requests.post(url=url, headers=headers)
# 2. 获取数据, 获取服务器返回的response数据 (文本数据)
# print(response.text) # 字符串类型
# 3. 解析数据, 提取我们想要的 壁纸详情页url
# 正则表达式, 就可以对于获取response.text 直接进行提取
# 返回列表数据类型, 对于列表而言, 我不想要它第一个元素, 操作...
# split() 这个是字符串方法 切片 列表元素位置 是从0开始计数
# 通过re模块里面findall 方法 从response.text 里面找到所有 关于
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?