第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-)
Answer:
-
首先你需要的是爬虫基础,如果还没接触过请先阅读Python 练习册,每天一个小程序-第 0008-0009 题
我们要做的就是爬取图片的源地址
下载到文件夹中
-
把光标移动到美女图片上,右键,审查元素
得到如下内容
<img pic_type="0" class="BDE_Image" src="http://imgsrc.baidu.com/forum/w%3D580%3Bcp%3Dtieba%2C10%2C302%3Bap%3D%C9%BC%B1%BE%D3%D0%C3%C0%B0%C9%2C90%2C310/sign=8800a2e3b3119313c743ffb855036fa7/1e29460fd9f9d72abb1a7c3cd52a2834349bbb7e.jpg" bdwater="杉本有美吧,955,550" width="560" height="323" changedsize="true" style="cursor: url("http://tb2.bdstatic.com/tb/static-pb/img/cur_zin.cur"), pointer;">
可以看到图片地址是在img的BDE_Image类中
我们先从文本中提取所有类名为此的img标签
但我们实际需要的其实是src中的图片网址而不是这么一大段
这里我查阅了官方文档
tag竟然是字典,那么我们从img中取出src就很容易了
-
当你得到图片地址的时候你需要的就是把他下载下来
requests.get(url)得到的是一个response对象
所以你需要做的就是以二进制的写入方式,写入到文件中
-
写文件的时候,怎么让文件排序呢
用flag是一个很简单的方法,循环一次加上1
但是这里可以使用一个更简单的方法
如果你想美化输出,例如“0001”这种格式
要用到"04%d"这种方式,注意:04中的0不可省略
这代表若不足四位则以0补全
-
代码实现
#coding:utf-8
import requests
from bs4 import BeautifulSoup
import os
os.chdir(r'C:\Users\Alex.hasee-PC\Desktop\pythonprogram\0013')
url='http://tieba.baidu.com/p/2166231880'
data=requests.get(url).text
soup=BeautifulSoup(data,'html.parser')
for count,i in enumerate(soup.select('img.BDE_Image')):
img=requests.get(i['src'])
with open('%04d.jpg'%count,'wb') as f:
f.write(img.content)
-