不会哄女朋友?来,教你爬搞笑图片
今日鸡汤
美丽的蓝图落在懒汉手里,也不过是一页废纸。
今天我们要爬取糗事百科中的图片,网站
案例分析
我们做爬虫首先需要找规律,在这其中最喜欢的就是分页栏了。有分页栏就代表当你按下一个页码的时候,HTML 页面会发起请求。有请求就肯定有数据,有数据就一定能抓到。
好,接下来回归正题~
我们打开这个网站,快速的将滚动条拖动到最下面,看到了我们最喜欢的分页栏
接下来我们打开浏览器抓包工具,观察浏览器地址栏,分析是否为异步请求。
简简单单同步请求,肯定用了 get 方法,既然为同步请求,我们就需要解析 HTML 页面,获取每个 img
标签中的 src
属性。
接下来继续观察浏览器地址栏中的规律,当我们在第一页的时候为
https://www.qiushibaike.com/imgrank/
这个地址。
我们切换至第二页为 https://www.qiushibaike.com/imgrank/page/2/
这个地址。
这其中有些规律。那将最后的数字改为 3 访问到的页面就是第三页。
好啦,html 跳转的规律和 HTML 请求方式,我们都已经知晓。
接下来解析 HTML 页面,在浏览器中右击查看桌面源代码。
然后使用开发者工具中的元素定位,定位一张图片。
上图中红框框出的部分为图片的 url 地址,绿框中为图片预览。可以将 url 复制下来到页面源码中分析。
在源码中的位置我们知道了,接下来只需要使用一种技术获取到就可以啦。
可选的技术有:
- xpath
- bs4
- 正则
这里我选择正则,因为每个 img
标签的相似度极高,可以批量使用。
如下图所示:
图中红框的部分为相同部分,绿框部分为不同部分,橙底为背景的为我们要取出的部分。
这里需要注意,获取的 src
属性需要添加 https:
前缀。
好啦,分析完毕啦,接下来 Let’s Coding~
开码
- 第一步:导入所需模块
- 第二步:用户输入爬取第几页的内容,或者定义爬取多少图片
- 第三步,设置
url
- 第四步:发请求
- 第五步:解析返回数据
- 第六步:保存图片
引入 requests
、re
、os
标题中的三个模块分别为:请求模块,正则表达式模块,系统模块
import requests, re, os
创建文件夹
# 判断存图片的文件夹是否存在
if not os.path.exists('./imgs'):os.mkdir('./imgs')
用户动态指定爬取图片
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
url = 'https://www.qiushibaike.com/imgrank/'
# 由用户控制爬取第几页的内容
url = url+'page/'+input('想爬取第几页?')
发请求并解析数据
respones = requests.get(url = url, headers= headers).text
# 正则规则,.*?为任意内容,(.*?) 为取出的内容,其中可以为任意内容
ex = '<div class="thumb">.*?<img src="(.*?)" alt="'
# 数据清洗,获取图片的地址,数组形式
urls = re.findall(ex,respones,re.S)
为获取的图片链接发请求并存储图片
for i in range(0,len(urls)):#为每个图片添加https前缀urls[i] = 'https:'+urls[i]#发请求img = requests.get(url = urls[i],headers=headers).content# 解析图片名称img_name = str(urls[i]).split('/')[-1]with open('./imgs/'+img_name,'wb') as fp:fp.write(img)print(img_name+'保存成功!')
完整代码
import requests,re,os
#引入 os 模块方便文件夹操作if __name__ == '__main__':# 判断存图片的文件夹是否存在if not os.path.exists('./imgs'):os.mkdir('./imgs')headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'}url = 'https://www.qiushibaike.com/imgrank/'# 由用户控制爬取第几页的内容url = url+'page/'+input('想爬取第几页?')# response中为网页源码respones = requests.get(url = url, headers= headers).text# 正则规则ex = '<div class="thumb">.*?<img src="(.*?)" alt="'# 数据清洗,获取图片的地址urls = re.findall(ex,respones,re.S)for i in range(0,len(urls)):#为每个图片添加https前缀urls[i] = 'https:'+urls[i]#发请求img = requests.get(url = urls[i],headers=headers).content# 解析图片名称img_name = str(urls[i]).split('/')[-1]with open('./imgs/'+img_name,'wb') as fp:fp.write(img)print(img_name+'保存成功!')
不会哄女朋友?来,教你爬搞笑图片相关推荐
- 我用python爬情头,来哄女朋友开心
我用python爬情头,来哄女朋友开心. 1.资源来自:www.woyaogexing.com/ 我要个性网址 这是我爬了一个多小时的成果 话不多说上代码! import timeimport req ...
- 情人节,数学教你如何科学地哄女朋友?
公众号内回复"哄女朋友"下载本文 PDF 版.请滑动或横屏查看长公式. 背景 马上又到情人节了,又是一年一度哄女朋友的好日子!然后却有很多男模友都向我述苦,不知道该如何哄女朋友.女 ...
- ChatGPT 大智近妖,从宇宙人生到手搓光刻机,从哄女朋友到写年终总结我们聊得非常开心,反而让人越来越忧心...
都说 ChatGPT 要干掉程序员,清理搜索引擎,取代Stack Overflow,还能消灭人类,这些有些言过其实了.ChatGPT 的定位是一个人工智能助理,它说,它的主要目的是通过回答用户的问题, ...
- 七夕节,程序员们都怎么哄女朋友开心?
大家好,马上就七夕节了,七夕节是牛郎织女鹊桥相会的相会的日子. 这篇文章的前提是,你得有个女朋友,没有就先收藏着吧! 一.七夕节的由来 七夕节的来源是梁山伯与祝英台的美丽传说,化成了一对蝴蝶~ 美丽的 ...
- python 获取窗口句柄_Python如何自动化哄女朋友
众所周知,哄女朋友开心是世界性的难题,那么该如何解决呢?或许可以尝试借助Python来实现自动化操作! 当女朋友说自己不舒服的时候,作为一个老实人当然是跟她讲多喝热水啦,但讲一遍多喝热水显然不足以显示 ...
- HDU 3236 Gift Hunting (程序猿的哄女朋友方式)
哄女朋友开心的错误示范. 题意:你和你女朋友(不,你没有)去购物,你有两个购物券v1,v2,不能叠加使用,所购买的礼物的和不超过券的值就可以买,你女朋友过生日,可以免费带走一个礼物.礼物有价格p和女朋 ...
- 学计算机了情话,二十句哄女朋友的情话 每句都很管用
在认识你之后,我才发现自己可以这样情愿的付出.今天小编为大家整理了哄女朋友的情话,希望大家喜欢. 1.你就像一碗汤,让我的心永远不会凉. 2.纵然世间任我挑,我的选择仍是你. 3.情是心中的向往,是感 ...
- 【爬虫】Yhen手把手教你爬取表情包,让你成为斗图界最靓的仔!
以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途,转载请说明出处,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/art ...
- 实战 | 使用 Python 哄女朋友
0. 前言 本文首发于公众号:可乐python说 昨天,和一位朋友聊天,他说最近准备学习 Python 这门编程语言,问我学完 Python 能做哪些事情. 正好,最近他女朋友有点闷闷不乐,他也寻思着 ...
最新文章
- BZOJ 2144 跳跳棋(神仙建模题,倍增 LCA,二分)【BZOJ修复工程】
- 带有128KB缓存的AD7606模拟采集板
- 强大的独立日期选择器(date picker)插件 - Kalendae
- gp数据库迁移数据到mysql_greenplum数据迁移
- 数据结构之红黑树(三)——删除操作
- TCP的带宽估计和丢包恢复
- 医疗中文问句意图匹配Top3方案ppt
- C# WinForm 开软件窗口居中 任意时刻窗体居中
- 怎样在php中制作电子相册,如何制作纪念电子相册
- 需求分析岗的一点总结
- PS自定义形状+笔刷添加打造完美水印
- android o bln-al10,bln-al10是什么手机型号 bln-al10是啥手机型号
- 当遇到火狐浏览器“建立安全连接失败”问题,处理方法
- h5公众号分享朋友、朋友圈
- postgresql学习(一)
- 文学阅读---菜根谭(1)
- Adobe XD和Sketch,谁才是王者?
- Spring Integration
- Delphi下POS打印机,控制开钱箱,客显,顾客显示屏,小票打印机
- Multisim 7位数码管
热门文章
- 计算机二级程序设计提交,程序设计方法与风格(计算机二级复习指导)
- php球半径为2的圆面积,某竖直平面内有一半径为R的光滑固定圆环,斜边长2R、短边长R的匀质直角三角板放在环内,试求三角板在其平衡位...
- educoder:实验七 元组和集合
- Python学习记录(一)
- Bixby在中国市场上线,三星推动智能手机全面跨入AI时代
- 程序员 不经历风雨,怎么见彩虹
- python中迭代_python中的迭代什么意思
- [ACM]辽宁省赛2010 (HZNU 1081-1089)
- easyExcel自定义背景颜色easyPoi自定义修改表头背景色
- 带你了解微信代运营公众号到底怎么做