效果

先看看最终的效果:
好多可爱的章鱼喵的自拍,

选取其中的一张看看,

效果还不错,用作头像是坠吼的。

想法

  1. 图片的来源
    答:可以使用搜索引擎搜索,但结果不尽人意,很多重复的,尺寸也不统一。无意中发现了这个神奇的网站https://octodex.github.com,所以就编写一个爬虫对上面的图片进行抓取。

  2. 如何开展

    1. 请求网址:https://octodex.github.com
    2. 提取上面Octocat的美图
    3. 下载到本地。
  3. 用到的工具

    1. python3

      • urllib.request:用于请求网页
      • BeautifulSoup:用于筛选网页内容,提取图片
    2. 集成开发环境IDE
      这里使用的是Pycharm社区版

魔法

import urllib.request
import requests
from  bs4 import BeautifulSoup
import os
# 抓取网站上所有的Github吉祥物的照片并保存到本地basic_url="https://octodex.github.com"def open_url(url):# r=urllib.request.urlopen(url)r=requests.get(url)print ('start!')code=r.status_codeif (code!=200):print(u"无法请求页面")else:print(u"页面请求成功")# html=r.content.decode('utf-8')return r.contentdef get_image_list(content):list=[]bs = BeautifulSoup(content, 'html.parser')cont = bs.find('div', 'content')imgs=cont.find_all('div', 'item-shell')# print(imgs)num=0for img in imgs:img_find=img.find("img")img_src=img_find["data-src"]img_full_url=basic_url+img_srcimg_name=img_find["alt"]# print(img_name,img_full_url)# print(img_info)img_info={}img_info['name']=img_nameimg_info['url'] = img_full_urllist.append(img_info)# num+=1# print("index=",num)# print(img)return listdef download_images(img_list):basePath = os.path.join(os.getcwd(), r'octocat')#获取当前工作路径filename = os.path.join(basePath, 'octocat_img')if not os.path.exists(filename):os.makedirs(filename)os.chdir(filename)print(u'保存至目录:',filename)#下载图片for img in img_list:print(u"正在下载...",img["name"])pic=requests.get(img["url"])fp = open(img["name"]+ '.png', 'wb')#这里是图方便,全部保存为png格式fp.write(pic.content)fp.close()if __name__ =='__main__':html=open_url(basic_url)img_list=get_image_list(html)# print(img_list)download_images(img_list)# print(html)# get_image_list(html)

就是这样。

关键

想法中的第二步,“如何提取Octocat的美图”,这时就要祭出神奇的F12——开发者工具按键了,分析一下网页的源代码中,我们的章鱼喵在哪里:

发现喵喵的图片就藏在源代码里,而且很有规律:

这就要用到美丽汤——BeautifulSoup,来熬煮一下:

    bs = BeautifulSoup(content, 'html.parser')cont = bs.find('div', 'content')imgs=cont.find_all('div', 'item-shell')

剩下的就是把网站遍历一遍,把小喵的自拍下载到我们本地:

def download_images(img_list):basePath = os.path.join(os.getcwd(), r'octocat')#获取当前工作路径filename = os.path.join(basePath, 'octocat_img')if not os.path.exists(filename):os.makedirs(filename)os.chdir(filename)print(u'保存至目录:',filename)#下载图片for img in img_list:print(u"正在下载...",img["name"])pic=requests.get(img["url"])fp = open(img["name"]+ '.png', 'wb')#这里是图方便,全部保存为png格式fp.write(pic.content)fp.close()

大功告成!

声明

Octocat形象版权为Github所有,请勿将其作为商业用途,如有侵权行为与本人无关。

【Python3】抓取Github吉祥物Octocat昵图并下载到本地相关推荐

  1. python获取app信息的库_基于python3抓取pinpoint应用信息入库

    这篇文章主要介绍了基于python3抓取pinpoint应用信息入库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Pinpoint是用Java编写 ...

  2. python抓取dblp网站的arXiv论文,下载保存成pdf

    python抓取dblp网站的arXiv论文,下载保存成pdf 需求 需要查找一些关于强化学习决策方面的论文,懒得一个一个下载,所以用python写了个脚本,在dblp网站上爬取论文. import ...

  3. Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

    Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接 1. 前言 2. 实现过程 3. 运行结果 1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到 ...

  4. 利用正则表达式爬取网络小说,并按照章节下载到本地

    利用正则表达式爬取网络小说,并按照章节下载到本地 闲来无事,尝试了使用正则表达式爬取了某个明显没有反扒机制的小说网站,其实也是刚刚接触爬虫,第一次从网络上爬到感兴趣的东西还是令人开心的. 先贴为敬. ...

  5. python3抓取数据_python3抓取到的拉勾数据统计

    趁着最近有时间写了个拉勾爬虫抓取了后端.前端和移动端技术岗位的数据,总共大约6多万条记录,对其取前十名进行统计 按地域划分: 可以看出北上广深杭的数量远远超出其它城市,机会相对较多 2. 按融资阶段来 ...

  6. [知识图谱实战篇] 一.数据抓取之Python3抓取JSON格式的电影实体

    前面作者讲解了很多知识图谱相关的原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但还是缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者学习了 ...

  7. python抓取网站88titienmae88中的“图片区”的第一页的所有图片

    #-*-coding:utf-8-*- from urllib.request import urlopen, urlretrieve from bs4 import BeautifulSoup im ...

  8. python抓取网站88titienmae88中的“图片区”所有图片

    #-*-coding:utf-8-*- from urllib.request import urlopen, urlretrieve from bs4 import BeautifulSoup im ...

  9. Python3抓取Bing每日图片做桌面背景,并设置为开机更新背景

    该程序是我学习Python的第一个小程序,用于熟悉Python语法,其中借鉴了很多其他网友的Code,望谅解. 参考列表 主要参考博客列表如下: LittleBearLi http://blog.cs ...

最新文章

  1. azure多功能成像好用吗_如何使用Azure功能处理高吞吐量消息
  2. 用protoc-gen-lua生成PB的lua代码
  3. 组图:1904年圣路易斯奥运会
  4. 无重叠区间及用最少的箭射爆气球
  5. vfp赋值超过7位出错_JDK1.7下的HashMap的源码分析
  6. 14、使用play搭建一个web应用用例
  7. Java核心(五)深入理解BIO、NIO、AIO
  8. python3 上传文件到目标机器_通过python模块实现服务器和本地机器之间快速拷贝文件...
  9. C++学习笔记56:异常处理
  10. Scrum Master需要具备哪些能力和经验
  11. 智能优化算法总结-数字孪生下的车间调度-APS预告
  12. 腾讯云TStack与IBM LinuxONE互认证
  13. [转载]修改SDE权限造成无法在ArcMap中绘制图形的解决办法
  14. Android HID触摸屏驱动怎么开发
  15. 爬虫--初体验(获取二级网站)
  16. photoshop图片显示为索引,解决办法
  17. 债券价格和到期收益率的关系_债券价格、到期收益率与票面利率之间的关系是什么?...
  18. Matplotlib绘制三维数据点与线
  19. 使用html5 canvas 绘制Android机器人
  20. 华子笔试 TLV的匹配 java版本

热门文章

  1. 用借款方实际付出的手续费(或利息)计算真实的手续费率(或利率)
  2. TI Sitara系列AM4376/AM4379 ARM Cortex-A9高性能低功耗处理器设计的工业级核心板
  3. MathType完美兼容Word 2019 最详细的安装配置教程转载
  4. 一个简单的ASP登录页面
  5. VMware虚拟机中摄像头打开显示黑屏或者摄像头打开无法弹出窗口的解决办法
  6. ThreadLocal 是什么?有哪些使用场景?
  7. 爬虫——bs4测试——test.html
  8. LabVIEW基础-内存优化
  9. 例题5.20 秦始皇修路 LA5713
  10. vue实现中英文网站配置