文章目录

  • 写在前面
  • 标题非常可口
    • 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爬取唯一图库高清壁纸相关推荐

  1. Python爬虫入门-scrapy爬取唯一图库高清壁纸

    首先,就是进入到唯一图库,点击上面的高清壁纸项目: 进入之后,下拉,发现是正常的下拉没有Ajax加载,拉到最后面点击末页,可以看出这个栏目里面总共有292页: 翻页看一下URL有什么变化,可以发现只有 ...

  2. python 爬取王者荣耀高清壁纸

    代码地址如下: http://www.demodashi.com/demo/13104.html 一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 ...

  3. Python爬虫实战| Python爬取英雄联盟高清壁纸

    先看一下最终爬取的效果,每个英雄的壁纸都被爬取下来了: "黑暗之女 安妮"的12张壁纸: 高清大图: 下面开始正式教学! 版本:Python 3.5 工具:Jupyter note ...

  4. 【Python爬虫实战】爬取彼岸图库高清图片

    利用Python爬取彼岸图库高清图片 让你每天一张壁纸不重样,今天利用Python爬取 彼岸图库 http://pic.netbian.com/ 分析网页 通过首页可以看到要获取全站图片必须先抓取各个 ...

  5. python爬取王者_python 爬取王者荣耀高清壁纸

    一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 预览一下桌面吧: 是不是看着这样的桌面也很带感,_ (学会这个技术,你可以爬取其他网站的类似图片 ...

  6. python爬虫爬取必应每日高清壁纸

    python爬虫爬取必应每日高清壁纸 一.简介 二.使用的环境 三.网页分析 1.分析网页每一页url形式以及总页数 2.网页重要信息收集 3.在源码中寻找所需信息的位置 四.代码实现 五.运行爬虫 ...

  7. 简单爬取wallpaper heaven高清壁纸(福利满满~)

    简单爬取wallpaper heaven高清壁纸 2021年1月30日更新 由于网站架构更改,以下内容已经并不能再实现爬取 思路大体不变,仅供参考思路 前言:wallpaper heaven是一个拥有 ...

  8. 还愁没壁纸?Python爬取5K分辨率高清桌面壁纸

    2019独角兽企业重金招聘Python工程师标准>>> 前言 相信大家都很需要哪些既好看又能符合自己当时的心情的高清壁纸,很多时候壁纸反应我们当时的心情,一张好的壁纸就一道靓丽的风景 ...

  9. python多线程爬取王者荣耀高清壁纸过程

    多线程与爬虫 目标url json中查找url 访问url 读取json 查看json的list数组 全部图片 粗暴的单线程获取 多线程执行 目标url 查看http://pvp.qq.com/web ...

最新文章

  1. OpenDigg前端开源项目月报201704
  2. msf rhosts设置文件_聊一聊基于 msf 的免杀项目测试过程
  3. 华为荣耀8青春版计算机在哪里,华为荣耀8青春版
  4. mormot支持websocket
  5. 2020年推荐系统工程师炼丹手册RecSys版
  6. composer查看当前镜像取消_Docker image镜像常用命令
  7. Java对象容器——List
  8. [AT2699]Flip and Rectangles
  9. orm mysql nodejs_【译】Nodejs最好的ORM
  10. k8s高可用集群_搭建高可用集群(部署haproxy和安装docker以及其他组件)---K8S_Google工作笔记0056
  11. python基础教程pdf-Python基础教程(第3版) PDF高清完整版免费下载|百度云盘
  12. ElementUI文档中忽略的内容补充
  13. servlet 返回可访问文件_Windows 10 可直接访问 Linux 文件
  14. Mac外接显示器默认30hz
  15. Sql Server专题三:SQL操作与技巧
  16. Android android-times-square一款好用的日历控件
  17. 一键模拟登陆华师大公共数据库!ver2.0
  18. AJAX+Servlet实现客户端无刷新请求服务器实践
  19. Chrono-Chrome下载管理插件
  20. 清华大学五道口金融学院2022年博士生(联合培养项目)招生简章

热门文章

  1. 搭建简易动态ip代理池
  2. 采用DUPLICATE 把asm数据库复制到文件系统
  3. 小鸡吃米java_小班语言活动:小鸡吃米
  4. Python项目实战 —— 01. 疾病预测结构化数据
  5. Matlab Mathematica MathCAD Maple比较(转载)
  6. fetch用英语解释_fetch的搭配、fetch的解释、fetch的翻译、fetch的例句、fetch的短语...
  7. 互联网不再是一片净土,背后有一滩让人难以接受的污水!
  8. Leetcode 53. 最大子序和
  9. 宝石幻想纷争java游戏_盛趣游戏公布新概念偶像养成RPG手游《宝石幻想:光芒重现》...
  10. 从零开始的人工智能学习(二)