平时旅游的时候,在旅游景区我们经常可以看到穿各种服饰去拍照的游客,也不会刻意多关注。前两天浏览网页无意看到一个网站,看到穿汉服的女孩是真的很好看。无论是工作需要还是创作文案,把这么漂亮的图片来当作素材都是一个很好的idea。有需要,我们就爬它,爬它,爬它!

话不多说,我们下面详细介绍图片爬取。

分析网站

网址如下:

'http://www.aihanfu.com/zixun/tushang-1/'

这是第一页的网址,根据观察,第二页网址也就是上述网站序号1变成了2,依次类推,就可以访问全部页数。

根据图示,我们需要获得每个子网站的链接,也就是href中网址,然后进入每个网址,寻找图片网址,在下载就行了。

子链接获取

为了获取上图中的数据,我们可以用soup或者re或者xpath等方法都可以,本文中小编使用xpath来定位,编写定位函数,获得每个子网站链接,然后返回主函数,这里使用了一个技巧,在for循环中,可以看看!

def get_menu(url, heades):"""根据每一页的网址获得每个链接对应的子网址params: url 网址"""r = requests.get(url, headers=headers)if r.status_code == 200:r.encoding = r.apparent_encodinghtml = etree.HTML(r.text)html = etree.tostring(html)html = etree.fromstring(html)# 查找每个子网址对应的链接, 然后返回children_url = html.xpath('//div[@class="news_list"]//article/figure/a/@href')for _ in children_url:yield _

获取标题和图片地址

为了尽量多的采集数据,我们把标签和图片地址采集一下,当然如果其他项目需要采集发布者和时间,也是可以做到多的,本篇就不再展开。

我们点开一个网址链接,如上图所示,可以发现标题在head的节点里面,获取标题是为创建文件夹时使用。

代码如下:

def get_page(url, headers):"""根据子页链接,获得图片地址,然后打包下载params: url 子网址"""r = requests.get(url, headers=headers)if r.status_code == 200:r.encoding = r.apparent_encodinghtml = etree.HTML(r.text)html = etree.tostring(html)html = etree.fromstring(html)# 获得标题title = html.xpath(r'//*[@id="main_article"]/header/h1/text()')# 获得图片地址img = html.xpath(r'//div[@class="arc_body"]//figure/img/@src')# title 预处理 title = ''.join(title)title = re.sub(r'【|】', '', title)print(title)save_img(title, img, headers)

保存图片

在翻转每一页时我们都需要把子链接对应的图片保存下来,此处需要注意对请求的状态判断、路径判断。

def save_img(title, img, headers):"""根据标题创建子文件夹下载所有的img链接,选择更改质量大小params:title : 标题params:  img :  图片地址"""if not os.path.exists(title):os.mkdir(title)# 下载for i, j in enumerate(img):  # 遍历该网址列表r = requests.get(j, headers=headers)if r.status_code == 200:with open(title + '//' + str(i) + '.png', 'wb') as fw:fw.write(r.content)print(title, '中的第', str(i), '张下载完成!')

主函数

下面就是主函数

if __name__ == '__main__':""" 一页一页查找params : None"""path = '/Users/********/汉服/'if not os.path.exists(path):os.mkdir(path)os.chdir(path)else:os.chdir(path)# url = 'http://www.aihanfu.com/zixun/tushang-1/'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'' AppleWebKit/537.36 (KHTML, like Gecko)'' Chrome/81.0.4044.129 Safari/537.36'}for _ in range(1, 50):url = 'http://www.aihanfu.com/zixun/tushang-{}/'.format(_)for _ in get_menu(url, headers):get_page(_, headers)  # 获得一页

至此我们已经完成了所有环节,关于爬虫的文章,小编已经不止一次的介绍了,一方面是希望大家可以多多熟悉爬虫技巧,另外一方面小编认为爬虫是数据分析、数据挖掘的基础。没有爬虫获取数据,何来数据分析。为了大家在爬虫方面更好的学习与成长,需要完整代码的同学,加群:850591259

精美汉服,送女友必备,Python百行代码带你玩转汉服圈!相关推荐

  1. 精美汉服,送女友必备,python百行代码带你玩进汉服圈!

    穿汉服的女孩是真的好看,一不小心进入某网址,彻底改变了我的人生价值观,还爬什么其他妹子,就一个字,爬她,爬它,就爬她! 梅开二度,作为爬图小能手的我又来啦,这次带给大家的是精美的汉服,我真的是太喜欢这 ...

  2. Python百行代码轻松爬取了妹子网100G的套图,希望你网盘内存够用

    前言 最近在做监控相关的配套设施,发现很多脚本都是基于Python的.很早之前就听说其大名,人生苦短,我学Python,这并非一句戏言.随着人工智能.机器学习.深度学习的崛起,目前市面上大部分的人工智 ...

  3. 网易数读所有精致图片,Python百行代码搞定!

    微信公众号原文链接 网易数读是一个数据新闻可视化栏目,致力于提供轻量化的阅读体验.其内容往往是结合时下新闻热点将相关数据可视化处理,并以精致的图文形式呈现出来. 举个栗子,大家感受一下人家的风格: 图 ...

  4. 支付宝新年五福新玩法,我用Python百行代码来实现!

    公众号 "菜鸟学Python" 第441篇原创,设为 "星标",一起学Python! 年关将近,支付宝又推出了一年一度的集五福的活动,今年的五福玩法相比于前几年 ...

  5. 小姐姐把信息撤了后如何查看?Python百行代码分秒恢复!

    不得不说有时候对方撤回信息的手速,那是真的666 从发出消息到撤回······ 瞬间搞定 emmmm 盯着手机屏幕都不知道发的是什么 只剩下: 曾几何时Python对我说:"时日已不多,速度 ...

  6. 百行代码带你入门 vue-router!

    作者 | 浪里行舟 责编 | 胡巍巍 前言 要学习vue-router就要先知道这里的路由是什么?为什么我们不能像原来一样直接用标签编写链接哪?vue-router如何使用?常见路由操作有哪些?等等这 ...

  7. python图像分类代码_Kaggle—So Easy!百行代码实现排名Top 5%的图像分类比赛

    Kaggle-So Easy!百行代码实现排名Top 5%的图像分类比赛 作者:七月在线彭老师 说明:本文最初由彭老师授权翟惠良发布在公众号"七月在线实验室"上,现再由July重新 ...

  8. Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋

    Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋 写在前面 需要用到的工具包和参考 游戏设定 初始化 切换下棋方 判断五子连珠(核心) 鼠标点击流程事件 成品展示 打 ...

  9. python写百行代码可运行_56 岁潘石屹学俩月 Python ,写下百行代码

    原标题:56 岁潘石屹学俩月 Python ,写下百行代码 By 超神经 内容导读:跨界王潘石屹在近期迷上了编程,不仅高调宣布学习 Python,拜老师,还隔三差五晒出自己的「编程课作业」,和网友进行 ...

最新文章

  1. 4安装-企业级 Hyper-v 群集部署实验方案
  2. @responseBody java_java-如何使用@ResponseBody从Spring Controller返回JSON数据
  3. 27 JSX函数子元素的应用与思考
  4. 地址栏 输入 参数 刷新参数丢失_小米11 Pro屏幕参数曝光:2K屏幕+120Hz刷新率
  5. virtualbox增强功能无法粘贴_Revit2020我眼中的十大新功能
  6. Android@Home与智能家居
  7. linux的管道和重定向,Linux培训之管道和重定向
  8. Python 技术篇-pyHook键盘鼠标监听事件,监测鼠标键盘按键实例演示
  9. 如何把大写金额变为小写数字_如何将小写金额变成大写数值
  10. kubelet nodelost
  11. Markdown 中 LaTex 数学公式命令
  12. Android:scheme总结(包含data其他部分)
  13. CS0533隐藏继承的抽条成员/CS0534不实现继承的抽象成员
  14. k8s dns 无法解析
  15. request+cheerio+iconv-lite+phantomJs制作简单漫画网站爬虫NodeJs项目
  16. linux相关命令------文件内容显示以及文件其他命令
  17. Hadoop面试连环炮
  18. 服务器提示临时文件已满,win10系统提示”由于临时文件夹已满而导致“磁盘空间不足”错误的解决办法_win10教程_uc电脑园...
  19. MATLAB机器人工具箱(四)动力学
  20. M5311接入onenet(LwM2M方式)

热门文章

  1. 微信小程序--手机号解密!必成功!!!
  2. oracle连接出现ora-12154,Oracle连接出现ora-12154无法解析指定的连接标识符
  3. oracle数据库报错12154,PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符解决方法...
  4. ios开发 静音键设置_iOS获取设备静音键的开关状态 误差优化
  5. C# 实现 微软WebRequestMethods.Ftp类中的FTP操作功能
  6. 微信小程序全局变量(globalData)和缓存(StorageSync)的区别和具体用法
  7. L9110S芯片:小功率直流电机的驱动电路方案
  8. 转行软件测试第一步,功能测试这8大重点要好好的掌握
  9. mysql多表查询sql优化_SQL多表查询优化
  10. linux网卡灯不亮怎么处理,电脑网卡灯不亮怎么办 电脑网卡灯不亮解决方法介绍【详解】...