python爬取唯一图库高清壁纸
文章目录
- 写在前面
- 标题非常可口
- 1:用到的包
- 2:定义主函数
- 3:获取图库的地址
- 4:创建图库路径并保存第一张
- 5:正则提取壁纸的URL特征
- 6:保存壁纸
- 完整代码
- 爬取结果
- 写在后面
写在前面
今天没事情做,想着换换电脑桌面,于是就搞出来这样一个东西。。这个网站没有什么反爬措施,也很适合练手用。
标题非常可口
1:用到的包
from bs4 import BeautifulSoup as bs
import requests
import os,re
from urllib import request
2:定义主函数
#主函数
def run():#获取网页数据req = requests.get(url=URL, headers=headers)req.encoding = req.apparent_encodinghtml = req.text#用BeautifulSoup抓取网页数据bf = bs(html,'lxml')photos = bf.find('div',class_="Clbc_Game_l_a").find_all('a',target = '_blank')#循环获取图库地址并保存壁纸for i in range(len(photos)):if i % 2 == 0:parse_photo(photos,i)
3:获取图库的地址
def parse_photo(photos,i):j = 2#获取图库地址photo = photos[i]url = photo.get('href')p_h = requests.get(url = url,headers = headers)p_h.encoding = p_h.apparent_encodingtext = p_h.text#获取第二张到最后一张的url特征pages = get_pages(text)#创建图库路径并保存第一张path = get_path(photo,text)#从第二张开始保存for page in pages:if j <= 10:#保存壁纸save_photo(url,page,j,path)#这个j是为了方便命名j+=1
4:创建图库路径并保存第一张
def get_path(photo,text):bf = bs(text,'lxml')#获取第一张壁纸的网页地址imgs = bf.find('div',class_="photo").find_all('a',class_ = 'down-btn')img_url = imgs[0].get('href')#创建第一张壁纸所属图库路径path = '图片/weiyi/' + photo.img.get('alt')if not os.path.exists(path):os.mkdir(path)#保存第一张filename = '1' + '.jpg'request.urlretrieve(img_url,path + '/' + filename)#返回图库路径return path
5:正则提取壁纸的URL特征
def get_pages(text):#利用正则表达式提取信息pattern = re.compile("<li><a\shref=.*?>\d{1,2}<")pages = re.findall(pattern,text)#返回特征信息return pages
6:保存壁纸
def save_photo(url,page,j,path):#构建壁纸所在网页的urlurl = url[0:32] + page[13:-4]#从网页中获取壁纸地址ph = requests.get(url = url,headers = headers)ph.encoding = ph.apparent_encodingbf = bs(ph.text,'lxml')imgs = bf.find('div',class_="photo").find_all('a',class_ = 'down-btn')img_url = imgs[0].get('href')#保存壁纸到其所属图库路径filename = str(j) + '.jpg'request.urlretrieve(img_url,path + '/' + filename)
完整代码
#用到的包
from bs4 import BeautifulSoup as bs
import requests
import os,re
from urllib import request#定义请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}#创建目标文件夹
if not os.path.exists('图片/weiyi'):os.mkdir('图片/weiyi')#网站主要url
URL = 'https://www.mmonly.cc/gqbz/'#主函数
def run():#获取网页数据req = requests.get(url=URL, headers=headers)req.encoding = req.apparent_encodinghtml = req.text#用BeautifulSoup抓取网页数据bf = bs(html,'lxml')photos = bf.find('div',class_="Clbc_Game_l_a").find_all('a',target = '_blank')#循环获取图库地址并保存壁纸for i in range(len(photos)):if i % 2 == 0:parse_photo(photos,i)def parse_photo(photos,i):j = 2#获取图库地址photo = photos[i]url = photo.get('href')p_h = requests.get(url = url,headers = headers)p_h.encoding = p_h.apparent_encodingtext = p_h.text#获取第二张到最后一张的url特征pages = get_pages(text)#创建图库路径并保存第一张path = get_path(photo,text)#从第二张开始保存for page in pages:if j <= 10:#保存壁纸save_photo(url,page,j,path)#这个j是为了方便命名j+=1def get_pages(text):#利用正则表达式提取信息pattern = re.compile("<li><a\shref=.*?>\d{1,2}<")pages = re.findall(pattern,text)#返回特征信息return pagesdef get_path(photo,text):bf = bs(text,'lxml')#获取第一张壁纸的网页地址imgs = bf.find('div',class_="photo").find_all('a',class_ = 'down-btn')img_url = imgs[0].get('href')#创建第一张壁纸所属图库路径path = '图片/weiyi/' + photo.img.get('alt')if not os.path.exists(path):os.mkdir(path)#保存第一张filename = '1' + '.jpg'request.urlretrieve(img_url,path + '/' + filename)#返回图库路径return pathdef save_photo(url,page,j,path):#构建壁纸所在网页的urlurl = url[0:32] + page[13:-4]#从网页中获取壁纸地址ph = requests.get(url = url,headers = headers)ph.encoding = ph.apparent_encodingbf = bs(ph.text,'lxml')imgs = bf.find('div',class_="photo").find_all('a',class_ = 'down-btn')img_url = imgs[0].get('href')#保存壁纸到其所属图库路径filename = str(j) + '.jpg'request.urlretrieve(img_url,path + '/' + filename) if __name__ == '__main__':print('begin')run()print('end')
爬取结果
写在后面
感觉代码非常的冗余。。。有待进步。
另外觉得爬取速度慢的同学可以试试多线程。
python爬取唯一图库高清壁纸相关推荐
- Python爬虫入门-scrapy爬取唯一图库高清壁纸
首先,就是进入到唯一图库,点击上面的高清壁纸项目: 进入之后,下拉,发现是正常的下拉没有Ajax加载,拉到最后面点击末页,可以看出这个栏目里面总共有292页: 翻页看一下URL有什么变化,可以发现只有 ...
- python 爬取王者荣耀高清壁纸
代码地址如下: http://www.demodashi.com/demo/13104.html 一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 ...
- Python爬虫实战| Python爬取英雄联盟高清壁纸
先看一下最终爬取的效果,每个英雄的壁纸都被爬取下来了: "黑暗之女 安妮"的12张壁纸: 高清大图: 下面开始正式教学! 版本:Python 3.5 工具:Jupyter note ...
- 【Python爬虫实战】爬取彼岸图库高清图片
利用Python爬取彼岸图库高清图片 让你每天一张壁纸不重样,今天利用Python爬取 彼岸图库 http://pic.netbian.com/ 分析网页 通过首页可以看到要获取全站图片必须先抓取各个 ...
- python爬取王者_python 爬取王者荣耀高清壁纸
一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 预览一下桌面吧: 是不是看着这样的桌面也很带感,_ (学会这个技术,你可以爬取其他网站的类似图片 ...
- python爬虫爬取必应每日高清壁纸
python爬虫爬取必应每日高清壁纸 一.简介 二.使用的环境 三.网页分析 1.分析网页每一页url形式以及总页数 2.网页重要信息收集 3.在源码中寻找所需信息的位置 四.代码实现 五.运行爬虫 ...
- 简单爬取wallpaper heaven高清壁纸(福利满满~)
简单爬取wallpaper heaven高清壁纸 2021年1月30日更新 由于网站架构更改,以下内容已经并不能再实现爬取 思路大体不变,仅供参考思路 前言:wallpaper heaven是一个拥有 ...
- 还愁没壁纸?Python爬取5K分辨率高清桌面壁纸
2019独角兽企业重金招聘Python工程师标准>>> 前言 相信大家都很需要哪些既好看又能符合自己当时的心情的高清壁纸,很多时候壁纸反应我们当时的心情,一张好的壁纸就一道靓丽的风景 ...
- python多线程爬取王者荣耀高清壁纸过程
多线程与爬虫 目标url json中查找url 访问url 读取json 查看json的list数组 全部图片 粗暴的单线程获取 多线程执行 目标url 查看http://pvp.qq.com/web ...
最新文章
- OpenDigg前端开源项目月报201704
- msf rhosts设置文件_聊一聊基于 msf 的免杀项目测试过程
- 华为荣耀8青春版计算机在哪里,华为荣耀8青春版
- mormot支持websocket
- 2020年推荐系统工程师炼丹手册RecSys版
- composer查看当前镜像取消_Docker image镜像常用命令
- Java对象容器——List
- [AT2699]Flip and Rectangles
- orm mysql nodejs_【译】Nodejs最好的ORM
- k8s高可用集群_搭建高可用集群(部署haproxy和安装docker以及其他组件)---K8S_Google工作笔记0056
- python基础教程pdf-Python基础教程(第3版) PDF高清完整版免费下载|百度云盘
- ElementUI文档中忽略的内容补充
- servlet 返回可访问文件_Windows 10 可直接访问 Linux 文件
- Mac外接显示器默认30hz
- Sql Server专题三:SQL操作与技巧
- Android android-times-square一款好用的日历控件
- 一键模拟登陆华师大公共数据库!ver2.0
- AJAX+Servlet实现客户端无刷新请求服务器实践
- Chrono-Chrome下载管理插件
- 清华大学五道口金融学院2022年博士生(联合培养项目)招生简章
热门文章
- 搭建简易动态ip代理池
- 采用DUPLICATE 把asm数据库复制到文件系统
- 小鸡吃米java_小班语言活动:小鸡吃米
- Python项目实战 —— 01. 疾病预测结构化数据
- Matlab Mathematica MathCAD Maple比较(转载)
- fetch用英语解释_fetch的搭配、fetch的解释、fetch的翻译、fetch的例句、fetch的短语...
- 互联网不再是一片净土,背后有一滩让人难以接受的污水!
- Leetcode 53. 最大子序和
- 宝石幻想纷争java游戏_盛趣游戏公布新概念偶像养成RPG手游《宝石幻想:光芒重现》...
- 从零开始的人工智能学习(二)