17行python代码抓取刘昊然图片之家的写真

用python来爬取网页信息是很简便的。因为它有很多库来帮助我们实现我们想要的功能。本实验用到的库有:requests和bs4中的BeautifulSoup。这两个库的安装过程如下:

#按住win+R,打开cmd,然后依次输入:
pip install bs4
pip install requests

在windows下爬取的话,还要检查自己是否安装了lxml。如果没安装,也可以直接用pip安装:

pip install lxml

安装好库之后呢,就可以开始爬取刘昊然的写真啦。

  • 首先找到图片之家中刘昊然壁纸的网址:http://www.tupianzj.com/mingxing/xiezhen/liuhaoran/

    由上面网址,我们可以翻译它的信息:http://图片之家/明星/写真/刘昊然

    所以,如果你要抓取其他的明星写真,只需要改变一下网址的最后一个就可以啦!

  • 打开网址,右键,点击“检查”,然后你就可以看到这个网页的源代码啦。然后分析源代码,发现图片都存在下图的1中,而图片的存放格式都如下图的2、3那样:

  • 找到规律后,我们就可以敲代码啦:

#导入库
from bs4 import BeautifulSoup
import requests #给定网址
URL = "http://www.tupianzj.com/mingxing/xiezhen/liuhaoran/"
#抓取该URL的内容
html = requests.get(URL).text
#解析html,并存放在soup中
soup = BeautifulSoup(html, 'lxml')
#找到上面说的图中1的位置,因为图片都在它之中
img_ul = soup.find_all('div', {"id": "main"})
#创建img文件夹来存放抓取到的图片
import os
os.makedirs('./img/',exist_ok=True)
#由上图的2、3可知道图片的具体位置是在’img src‘中,所以先把所有的img找出来,再一一访问
imgs = ul.find_all('img')
#一一访问图片并下载
for img in imgs:
url = img['src']
r = requests.get(url, stream=True)
image_name = url.split('/')[-1]
with open('./img/%s' % image_name, 'wb') as f:
for chunk in r.iter_content(chunk_size=128):#以128字节大小存放
f.write(chunk)
print('Saved %s' % image_name)
Saved 9-1P31G623590-L.jpg
Saved 9-1P3131419500-L.jpg
Saved 9-1P3031414430-L.jpg
Saved 9-1P3021543180-L.jpg
Saved 9-1P3021123440-L.jpg
Saved 9-1P22G043450-L.jpg
Saved 9-1P1291JR50-L.jpg
Saved 9-1P1221131480-L.jpg
Saved 9-1P1051036070-L.jpg
Saved 9-1P1051001240-L.jpg
Saved 9-1G219115I70-L.jpg
Saved 9-1G1151100100-L.jpg
Saved 9-1G0301436130-L.jpg
Saved 9-1G0041543170-L.png
Saved 9-1FZ91523210-L.png
Saved 9-1FHG13P60-L.png
Saved 9-1F5201911020-L.jpg
Saved 16-1612191430140-L.jpg
Saved 16-160P11A0460-L.jpg
Saved 9-16062G41001227.jpg
Saved 16-1605301305090-L.jpg
Saved 16-16051Q442070-L.jpg
Saved 16-16051Q416050-L.jpg
Saved 16-1605161012270-L.jpg
Saved 16-1604131Z0240-L.jpg
Saved 9-16012Q120410-L.jpg
Saved 9-151224200S00-L.jpg

至此,图片抓取完啦,打开img文件夹看看:



看,图片都下载到这啦。随便点开一张:



帅帅的刘昊然!

最新文章

  1. Object-C 1.0 第二章
  2. HDU 4336 容斥原理 || 状压DP
  3. Restful.Data 开源持久层组件项目最新进展和使用说明
  4. css弹性布局
  5. HDU 2955
  6. Unity 3D学习之 Prime31 Game Center插件用法
  7. X431 元征诊断枪
  8. XDocument和XmlDocument的区别
  9. Android混淆配置文件规范
  10. hdu 5532 Almost Sorted Array(模拟)
  11. Backbone视图渲染React组件
  12. 【BZOJ2684】【CEOI2004】锯木厂选址(斜率优化,动态规划)
  13. CSS : color and unit
  14. CodeForces121E 线段树上线段果
  15. Java 身份证号码验证
  16. Ubuntu14.04 编译 Android 5.1.1源码(采用国内镜像)
  17. Android dialog使用
  18. DNS使用的是TCP协议还是UDP协议(转)
  19. samba服务的高级进阶配置
  20. 【转】java线程池

热门文章

  1. Ubuntu下修改tomcat6默认的8080端口
  2. Unity3D中uGUI事件系统简述及使用方法总结
  3. Java动态代理机制小结
  4. UML类图简单说明,学习编程思路的必会技能
  5. C++ 类的多态二(函数重载--函数重写--函数重定义)
  6. 腾讯课堂1:使用Jmeter内置的录制功能进行录制
  7. 《linux 内核全然剖析》 include/asm/io.h
  8. (转)memcache、redis缓存
  9. linux中的etc目录
  10. mstsc远程登录设置