需要准备的东西:

用到的环境:python3.7

用到的ide:pycharm

用到的库 time、BeautifulSoup、requests

本次的目标:

下载几百张海贼王的高清壁纸

练习爬虫

分析网页

首先,我们进入这个网站,搜索海贼王,还是挺好看的

打开我们的分析工具(按F12)并刷新这个网页,这个数据这么多,很明显就是这个页加载了大量的图片

然后我们右键单击任意一张图片,复制图像链接

在刚刚那个单页里面搜索这个 链接,试试打开这个链接(怎么打开我应该不用说了)

打开链接

哎~,这个图片怎么这么小,和我们想象的高清壁纸不太一样,看来我们还得继续分析,接下来返回那个网站,点击进入这个图片发现:

这个图一点也不小啊,为什么我们提取出来就变小了呢,接下来复制这个大图的链接和小图链接对比一下

很明显小图链接多了thumb-350-应该是为了加快加载进度做的缩略图,没关系,这个东西在Python里面可以很轻易的去除

接下来进入代码时刻:

import requests

import time

from bs4 import BeautifulSoup

class downloader():

def __init__(self):

self.url=[];

self.target = 'https://wall.alphacoders.com/search.php?search=One+Piece'

def find_down(self):

req = requests.get(self.target)

print(req.text)

#没有什么新的知识点,所以未加注释

if __name__ == '__main__':

gp = downloader()

gp.find_down()

运行结果:

很明显我们把整个网站爬下来了,但是我们需要的仅仅是链接而已,下面进行分析,并用BeautifulSoup库过滤不必要的东西

这个很简单,根据我们上次的知识直接过滤就ok

import requests

import time

from bs4 import BeautifulSoup

class downloader():

def __init__(self):

self.url=[];

self.target = 'https://wall.alphacoders.com/search.php?search=One+Piece'

def find_down(self):

req = requests.get(self.target)

html = req.text

bf = BeautifulSoup(html)

div = bf.find_all('div',class_='boxgrid') #只保留class=boxgrid的数据,也就是图片链接

print(div)

if __name__ == '__main__':

gp = downloader()

gp.find_down()

运行结果:

对了,我们想要的就是这些,但是还需要进一步过滤,过滤img标签:

import requests

import time

from bs4 import BeautifulSoup

class downloader():

def __init__(self):

self.target = 'https://wall.alphacoders.com/search.php?search=One+Piece'

def find_down(self):

req = requests.get(self.target)

html = req.text

bf = BeautifulSoup(html)

div = bf.find_all('div',class_='boxgrid') #只保留class=boxgrid的数据,也就是图片链接

img = BeautifulSoup(str(div))

print(img)

if __name__ == '__main__':

gp = downloader()

gp.find_down()

运行结果:

看起来基本上没有任何作用,下面我们通过data-src来取出这些链接,至于为什么用data-src,上面图中有

完全过滤代码:

import requests

import time

from bs4 import BeautifulSoup

class downloader():

def __init__(self):

self.target = 'https://wall.alphacoders.com/search.php?search=One+Piece'

def find_down(self):

req = requests.get(self.target)

html = req.text

bf = BeautifulSoup(html)

div = bf.find_all('div',class_='boxgrid') #只保留class=boxgrid的数据,也就是图片链接

img = BeautifulSoup(str(div))

img_data = img.find_all('img')

for each in img_data:

print(each.get('data-src'))

if __name__ == '__main__':

gp = downloader()

gp.find_down()

运行结果:

这一片蓝蓝的url就是我们需要的了,但是我们似乎忽略的一件事,那就是我们现在只是获取了一页的url,我们需要爬更多页的怎么办,下面我们一起来分析一下,首先打开抓包工具(还是那个F12),然后点击第二页,看一下url有什么区别

所以也就不用分析了,第三页的url肯定是page=3,以此类推...

爬取任意页到任意页代码:

import requests

import time

from bs4 import BeautifulSoup

class downloader():

def __init__(self):

self.target = 'https://wall.alphacoders.com/search.php?search=one+piece&page='

def find_down(self):

for i in (1,5):

self.target = self.target + str(i) #到整数的i

req = requests.get(self.target)

html = req.text

bf = BeautifulSoup(html)

div = bf.find_all('div',class_='boxgrid') #只保留class=boxgrid的数据,也就是图片链接

img = BeautifulSoup(str(div))

img_data = img.find_all('img')

for each in img_data:

print(each.get('data-src'))

if __name__ == '__main__':

gp = downloader()

gp.find_down()

不难发现,我们其实只加了两行代码,就实现了获取多页的功能,下面我们来把多余的thumb-350-过滤掉

过滤代码:

img = BeautifulSoup(str(div))

img_data = img.find_all('img')

img_data = str(img_data) #str是转为文本型

img_url = img_data.replace('thumb-350-','') #把thumb-350-替换为空

既然所有工作都已完成,现在我们就完成程序,把图片下载下来

完整代码:

import requests

import time

from bs4 import BeautifulSoup

class downloader():

def __init__(self):

self.target = 'https://wall.alphacoders.com/search.php?search=one+piece&page='

def find_down(self):

num = 1

path = 'C:\Users\Administrator\PycharmProjects\untitled3\海贼王壁纸\'

for i in (1,5):

print('开始下载第'+str(i)+'页')

self.target = self.target + str(i) #到文本的i,页数

req = requests.get(self.target)

html = req.text

bf = BeautifulSoup(html)

div = bf.find_all('div',class_='boxgrid') #只保留class=boxgrid的数据,也就是图片链接

img = BeautifulSoup(str(div)) #转换文本型

imgs = img.find_all('img') #匹配img标签

for each in imgs:

print('开始下载第'+str(num)+'张图片')

num = num + 1

data = each.get('data-src') #获取data-src后面的内容,也就是链接

data = str(data).replace('thumb-350-', '') #替换thumb-350-为空

file = requests.get(data) #访问图片文件

fileName = str(time.time()) #取现行时间戳,时间戳含义请百度

with open(path + fileName +'.jpg','wb')as f: #写文件,wb是权限

f.write(file.content) #写文件

if __name__ == '__main__':

gp = downloader()

gp.find_down()

#本次代码还留下了几处可以完善的地方,增加运行效率

运行效果:

至此,教程完毕,下次教程不出意外的话是爱奇艺、腾讯视频之类的vip视频免费看,当然只是交流学习,请尊重原创版权![]

python代码壁纸-Python爬取高清壁纸相关推荐

  1. python监视电脑桌面_Python爬虫练习:爬取高清壁纸,让你电脑桌面一天一换

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本环境配置 python 3.6 pycharm requests 在这里插入图片描述 在 ...

  2. Python爬虫爬取高清壁纸

    电脑壁纸?手机壁纸?还去各个壁纸网站上去搜索吗?现在不需要了!只需要选择想要的壁纸类型,然后就静静等待一会儿,大量壁纸就保存在你的电脑上,一个爬虫解决你的想要壁纸的烦恼. 该爬虫比较简单,很容易上手, ...

  3. Python爬虫-带你爬取高清美女图片

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:明天依旧可好 ( 想要学习Python?Python学 ...

  4. 爬虫第1课,手把手教你,批量爬取高清壁纸

    一.环境准备 '''1.安装虚拟环境 python -m venv venv2.选择解释器 File/Settings/Project:getPicture(项目名)3.进入虚拟环境 cd .\ven ...

  5. python网络爬虫快速下载4K高清壁纸

    python网络爬虫快速下载4K高清壁纸 此处给出下载壁纸的链接地址彼岸图网,进入网站之后,我们看到可以下载风景,游戏,动漫,美女等类型的4K图片,装逼一下,re库有贪婪匹配,那我们就写一个通用代码来 ...

  6. python爬虫练习高清壁纸【王者荣耀高清壁纸】python爬虫

    python爬虫练习高清壁纸[王者荣耀高清壁纸] 仅做练习使用,各位小伙伴不用乱来!!! 现成的代码,直接拿走研究,已经精简了自行美化 页面自己去分析分析 ,学习效果更佳. import reques ...

  7. 【python日常学习】爬取4K桌面壁纸

    [python日常学习]爬取4K桌面壁纸 这个网站都是4K的桌面壁纸. 不多说,直接上代码 import re import requests import osdef get_page():page ...

  8. 爬虫实例(二)—— 爬取高清4K图片

    大家好,我是 Enovo飞鱼,今天继续分享一个爬虫案例,爬取高清4K图片,加油

  9. python手机壁纸超清_python爬虫 爬取超清壁纸代码实例

    简介 壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物.然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁 ...

最新文章

  1. “throw”和“throw ex”之间有区别吗?
  2. 分贝(BD)的含义以及关系(有助于深刻理解)
  3. 导师都有哪些“秘密”没有告诉你?
  4. android自定义的生命周期,android 自定义控件之ViewGroup生命周期执行步骤(示例代码)...
  5. Linux下的磁盘分区与加密
  6. BTC 重现“自由落体”式暴跌,原来是受这几个因素影响?
  7. nbi可视化_2020最受欢迎的5个数据可视化工具分享
  8. 简单的扫雷游戏代码(c++)
  9. 2019年9月全国计算机二级Office题库软件
  10. php代码上传工具,php中文网重磅推出“php程序员工具箱” v0.1版本!
  11. 【应用多元统计分析】CH5 判别分析3——贝叶斯判别
  12. np.minimum()与tf.minimum()的用法
  13. 一题多做--杨辉三角形
  14. 【愚公系列】2022年12月 使用win11系统自带SSH,远程控制VMware中Liunx虚拟机系统
  15. 百度的春晚战事:如何扛住腾讯、阿里都宕机的量?
  16. 本科计算机er如何入手一些项目?
  17. 转:关于C++ const 的全面总结
  18. ubuntu18.0404 aws 云服务器启动和登陆 windows 虚拟机
  19. 国内安全厂商护航XP能力引争议
  20. C#使用HttpWebRequest下载文件

热门文章

  1. autosar can协议栈 源码解读_我用一晚上时间给女朋友讲懂CAN总线的AUTOSAR网络管理...
  2. mfc上位机网络接收图片并显示_工控机上位机软件的开发历程
  3. go语言笔记——数组长度不可变,但是元素值是可变的!!!
  4. HDFS namenode 高可用(HA)搭建指南 QJM方式 ——本质是多个namenode选举master,用paxos实现一致性...
  5. 2015年各银行无抵押信用贷款利率及额度是多少?
  6. vue编写messageBox,使用函数调用
  7. keybd_event 被 SendInput 替代
  8. [NOI2008]志愿者招募
  9. Struts2 数据标签
  10. 用Jmeter制造软件测试数据