牛老师是一个滴水之恩当涌泉相报的人。

看着群里小伙伴们的无私分享,再看看自己空空如也的文件夹,我羞愧的低下了头 。

为了能回报小伙伴,和广大无私的网友

牛老师毅然决然的做出了这个造福人民的决定

靠着这个程序,如今已经成为了群里众人膜拜的大佬

接下来牛老师将法宝传授给你们,让你们也能拥有属于自己的“学习资料”

开发环境

  • 系统:Windows10 64位

  • Python版本:3.9

  • Pycharm版本:2021.1.3

  • 模块(库):re、requests、os、BeautifulSoup

一、获取网页信息

强壮的牛老师,选择了一个柔弱没有防备的网站来偷袭

为了伪装成一个无害的文弱青年,方便之后的进一步操作

祭出祖传操作,先声明一个请求头,下面的headers参数用于伪装

然后悄咪咪的偷袭,先判断能不能下手,确定能下手后先获取了第一手信息

url = 'http://www.netbian.com/meinv/'
#先声明请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
#判断网络连接状态
try:r = requests.get(url, headers=headers)r.raise_for_status()r.encoding = r.apparent_encodingprint(r.text)
except:print('网络状态错误')

二、分析网页

想到马上就能得到图片的牛老师满心欢喜,激动的打开了图片

结果发现画质不太给力,原本1920x1080的高清大图变成了800x450


直接通过主页面所下载的图片是缩略图

于是牛老师通过进入到详情页,又下载了一次。果然,这次得到了又大又圆的高清图片

按下F12,查看div标签中图片的详细参数,可以看到这里有高清大图的链接

所以,我们只需要通过BeautifulSoup提取出来,下载它就很简单了

三、获取图片链接

既然找到了高清图片的链接,那么就通过BeautifulSoup,把这些链接都截取下来

首先牛老师先把,获取网页信息的代码封装成函数,以方便调用

def getHtml(url):#先声明请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}#判断网络连接状态try:r = requests.get(url, headers=headers)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:print('网络状态错误')

因为要的是有用的数据,这一步首先把整体的链接都提取出来了

电脑很蠢,不能直接拿到我们想要的数据,所以这里通过"list"作为锚点,把有用的地方筛选出来

把没有用的链接先剔出去

有用的链接因为都只有后缀,所以下面给它凑个网址出来,这样一个完整的链接就出来了

url = 'http://www.netbian.com/meinv/'
#先储存每张图的url
url_list = []
demo = getHtml(url)
soup = BeautifulSoup(demo,'html.parser')
#class='list'作为锚,方便获取我要的数据;为了和类做区分,这里class下方加了"_"
sp = soup.find_all('div', class_="list")
#提取链接
nls = re.findall(r'a href="(.*?)"', str(sp))
for i in nls:#剔除掉无效链接if 'https' in i:continue#获取链接后添加网址前缀url_list.append('http://www.netbian.com' + i)
print (url_list)

这样url_list列表就被塞满了,把结果打出来给牛老师康康

四、保存图片

牛老师空荡荡的文件夹,这次总算是可以喂饱了

图片也看了,链接也爬出来了,那接下来又怎么办呢?

那当然是保存咯

首先,还要再按按F12进入调试台,找到高清大图的下载链接

以pic的位置作为锚点,获取我们需要的数据

找到准确的图片地址后,然后开始下载

这里也要将获取图片链接的程序封装一下

def getUrlList(url):#先储存每张图的urlurl_list = []demo = getHtml(url)soup = BeautifulSoup(demo,'html.parser')#class='list'作为锚,方便获取我要的信息;为了和类做区分,这里class下方加了"_"sp = soup.find_all('div', class_="list")#提取链接nls = re.findall(r'a href="(.*?)"', str(sp))for i in nls:#剔除掉无效链接if 'https' in i:continue#获取链接后添加网址前缀url_list.append('http://www.netbian.com' + i)return url_list

封装好了之后,就可以开始以下代码编辑

url = 'http://www.netbian.com/meinv/'
#第一页
page = 1
pic_url = getUrlList(url)
#保存的路径
path = './学习资料'
for p in range(len(pic_url)):pic = getHtml(pic_url[p])soup = BeautifulSoup(pic, 'html.parser')#这里以pic为锚,方便找到需要的信息;psoup = soup.find('div', class_="pic")#获取高清图片下载链接,返回的是列表形式,所以咱们一个一个拿picUrl = re.findall(r'src="(.*?)"', str(psoup))[0]#打开链接,以二进制形式返回pic = requests.get(picUrl).content#给图片文件起名image_name ='学习资料' + '第{}页'.format(page) + str(p+1) + '.jpg'#设置图片保存位置image_path = path + '/' + image_name#保存图片with open(image_path, 'wb') as f:f.write(pic)print(image_name, '拿来吧你!!!')

看着空空的文件夹,渐渐出现了学习资料

牛老师兴奋不已,但人的欲望是不会轻易满足的

只能爬取一页?那不行,于是下面开始自己设定爬取的页数

把你的学习资料塞得满满当当

五、完整程序

前面的学习资料对于老司机来说,依然只是洒洒水

于是牛老师教你怎么爬取更多更多好康的图片

首先,依旧是检查下网页,先搞清楚如何翻页的


第一二页的区别仅仅只是变换了下数字,同理第三页后缀3

所以就只需要做一个小小的加法,依次递增翻页就完成了

现在导入程序,之前的图片保存代码封装一下

这里封装的函数叫fillpic(),等下把所有源码放在下方

n = input('爬取页数:')
#美女图片首页,可以更换
url = 'http://www.netbian.com/meinv/'
#如果没有学习资料,自动创建一个文件夹
if not os.path.exists('./学习资料'):os.mkdir('./学习资料/')
page = 1
#先爬取第一页,第一页没有后缀数字,所以单独拿出来
fillPic(url, page)
#遍历爬取之后的页数
if int(n) >= 2:ls = list(range(2, 1 + int(n)))url = 'http://www.netbian.com/meinv/'for i in ls:page = str(i)url_page = 'http://www.netbian.com/meinv/'#获取高清大图的链接url_page += 'index_' + page + '.htm'#保存图片fillPic(url, page)

先自己设定页数,想爬多少爬多少

存满你的学习文件夹

下面牛老师把所有的代码都理一遍

六、源码

import requests
import re
import os
from bs4 import BeautifulSoup#获取网页信息
def getHtml(url):#先声明请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}#判断网络连接状态try:r = requests.get(url, headers=headers)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:print('网络状态错误')#获取图片链接
def getUrlList(url):#先储存每张图的urlurl_list = []demo = getHtml(url)soup = BeautifulSoup(demo,'html.parser')#class='list'作为锚,方便获取我要的信息;为了和类做区分,这里class下方加了"_"sp = soup.find_all('div', class_="list")#提取链接nls = re.findall(r'a href="(.*?)"', str(sp))for i in nls:#剔除掉无效链接if 'https' in i:continue#获取链接后添加网址前缀url_list.append('http://www.netbian.com' + i)return url_list#保存图片
def fillPic(url,page):pic_url = getUrlList(url)#保存的路径path = './学习资料'for p in range(len(pic_url)):pic = getHtml(pic_url[p])soup = BeautifulSoup(pic, 'html.parser')#这里以pic为锚,方便找到需要的信息;psoup = soup.find('div', class_="pic")#获取高清图片下载链接,返回的是列表形式,所以咱们一个一个拿picUrl = re.findall(r'src="(.*?)"', str(psoup))[0]#打开链接,以二进制形式返回pic = requests.get(picUrl).content#给图片文件起名image_name ='学习资料' + '第{}页'.format(page) + str(p+1) + '.jpg'#设置图片保存位置image_path = path + '/' + image_name#保存图片with open(image_path, 'wb') as f:f.write(pic)print(image_name, '拿来吧你!!!')def main():n = input('爬取页数:')#美女图片首页,可以更换url = 'http://www.netbian.com/meinv/'#如果没有学习资料,自动创建一个文件夹if not os.path.exists('./学习资料'):os.mkdir('./学习资料/')page = 1#先爬取第一页,第一页没有后缀数字,所以单独拿出来fillPic(url, page)#遍历爬取之后的页数if int(n) >= 2:ls = list(range(2, 1 + int(n)))url = 'http://www.netbian.com/meinv/'for i in ls:page = str(i)url_page = 'http://www.netbian.com/meinv/'#获取高清大图的链接url_page += 'index_' + page + '.htm'#保存图片fillPic(url, page)main()

有了这段代码,只要你按照以上思路,稍作修改(bie fenghao)

还愁自己拼不过群友吗?

本篇文章就到这了

想要了解更多关于爬虫,关于python知识

可以动动小手给牛老师点个关注,以后会持续更新

美图收割机,老司机带你用Python,轻松获取1000张美女图片相关推荐

  1. n76e003引脚图_老司机带你入门新塘N76E003单片机

    出品 21ic中国电子网 一路向北lm 网站:bbs.21ic.com 第一个问题,究竟要玩哪一个芯? 今年真是变幻莫测的一年,芯片的真是流水账的价格,一天一个样,翻翻自己的抽屉,一堆的板卡,不知玩弄 ...

  2. 老司机带你用python从另外一个角度看市场需求~

    从这个标题来看就很有格局有没有? 今天教的是采集按摩店的数据, 不爬不知道呀, 光是一个城市的前10页数据, 都有1000多家店了, 全部爬完,那不得至少3000家以上? 现在的市场需求都那么大的吗? ...

  3. 老司机带你玩转SDL(一)

    老司机带你玩转SDL --第一站"缘由" 啦啦啦,啦啦啦 我是SDL的老司机 大厂小厂曾呆过 今天的内容真正好 带着大家把SDL玩转了 ---- 伴随着类似聂耳<卖报歌> ...

  4. 老司机带你从源码开始撸Spring生命周期!!!

    导读 Spring在Java Web方面有着举足轻重的地位,spring的源码设计更是被很多开发者所惊叹,巧妙的设计,精细的构思,都注定他的地位.今天陈某大言不惭的带你来从源码角度解析Spring的生 ...

  5. Java用map实现沁园春_QQ飞车:沁园春地图车神跑法,实力老司机带你了解这几个技巧...

    原标题:QQ飞车:沁园春地图车神跑法,实力老司机带你了解这几个技巧 QQ手游飞车上线以来收获了一大堆的迷妹迷弟,小编当然也是其中之一啦,小编在这里给大家带来最新的游戏资讯,和各种模式以及赛道的解说. ...

  6. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

  7. 十年建站老司机带你十分钟搭建网站

    十年建站老司机带你十分钟搭建网站 本文概要: 1. 域名 + 域名注册 + 域名备案 + 域名解析绑定 2. 服务器 + 虚拟主机 + windows服务器 + linux服务器 3. CMS建站系统 ...

  8. 短视频+直播源码,直播老司机带你飞

    短视频+直播源码,直播老司机带你飞 脱胎于视频直播的短视频以近乎疯狂的速度攫取着互联网的流量,当抖音.快手的月活已经足够强大,他们又毫不犹豫地切入了直播腹地. 当互联网竞争进入下半场,依靠互联网人口. ...

  9. 金士顿固态硬盘不认盘修复_#原创新人#老司机带你玩转PC,故障之SSD篇 篇一:金士顿 V300 240G SATA3 固态硬盘 丢盘掉速解决记录...

    #原创新人#老司机带你玩转PC,故障之SSD篇 篇一:金士顿 V300 240G SATA3 固态硬盘 丢盘掉速解决记录 2016-10-25 11:14:08 12点赞 72收藏 23评论 小编注: ...

最新文章

  1. HTTP中Get与Post的区别
  2. codeforces316E3
  3. 网盘们打打打起来了(doge)
  4. 手机webapp meta标签 (全屏)
  5. 【Linux 操作系统】Ubuntu 配置 ftp freemind adb
  6. 浅析Web2.0技术
  7. 社会阶层及由此引起的社会动力学现象
  8. iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
  9. 汇编语言LAHF和SAHF指令
  10. LeetCode 587. 安装栅栏 / LintCode 1152. 安装栅栏(凸包检测:排序+叉积正负判断+正反扫描+去重)
  11. 死锁的 4 种排查工具 !
  12. 【数据结构与算法】通俗易懂说链表
  13. PostgreSQL高可用集群在360的落地实战
  14. python爬取知乎页面的LaTeX公式
  15. 菜鸟教程java二维数组_asp数组的使用介绍
  16. 人行发布2018年度银行科技发展获奖名单
  17. NFT开拓IP授权新模式
  18. 联邦学习首次被纳入Gartner隐私计算技术成熟度曲线
  19. 理财U24 认股权证、可赎债、可转债、永续债、优先股 教材解读
  20. 云蹦迪云广场舞软件开源源码

热门文章

  1. TikTok搞事情?进军游戏领域,其他厂商还有活路吗?
  2. 如何用代码获取Iphone 系统版本型号
  3. Lenovo x230i 突然没有声音了
  4. 干货系列:高通量测序后的下游实验验证方法——m6A RNA甲基化篇|易基因
  5. 第二届流量开放合作大会8月19日召开 聚焦流量+新生态
  6. 电脑上课用什么软件,教学中常用的计算机软件推荐
  7. 关于某些网站不能使用Adobe PDF Reader下载PDF文件的问题解决方案
  8. 无锡设计——CAD设计和绘图的优点
  9. CarSim软件转向系统传动比如何得到?
  10. 当深度强化学习遇到『羊了个yang』;AI开始研究『麻将』了?3类资料带你准备技术面试;机器学习资源列表;前沿论文 | ShowMeAI资讯日报