Python初体验:获取下载网页上的图片

利用python爬网站上的图片并下载

打开链接https://www.douban.com/photos/album/1652407753/, 如图是一个相册.

如何下载网页上的图片, 如下图:

python 有很多强大的库, beautifulsoup 这个库解析html非常好用

安装BeautifulSoup

sudo pip install BeautifulSoup

如果出现-bash: pip: command not found,先安装 pip

sudo easy_install pip

网页右键查看源码, CMD+F 查找这个图片所在位置

图片链接在div标签下的img标签里,现在需要做的就是把这种类型的div从所有html中分离出来,但是这个div标签有个属性叫做class,属性的值是class=”photo_wrap”。拿到这个div集合,遍历里面的img标签,得到图片地址,再下载到本地。代码如下:

#!/usr/bin/python
#-*- coding: utf-8 -*-
#encoding=utf-8

import urllib2
import urllib
import os
from BeautifulSoup import BeautifulSoup

def downLoadAllImage():
    html = urllib2.urlopen('https://www.douban.com/photos/album/1652407753/').read()
    # 解析html
    soup = BeautifulSoup(html)
    # 从html里找到所有class 为 photo_wrap 的div
    divResult = soup.findAll('div',attrs={"class":"photo_wrap"})
    x = 0
    for div in divResult:
        # 得到所有的img标签
        imageArray = div.findAll('img')
        for image in imageArray:
            # 拿到img标签的链接
            link = image.get('src')
            # 拼接路径
            filePath = '/Users/kangbing/Desktop/images/%s.jpg' % x
            x += 1
            print filePath
            # 下载并保存到本地
            urllib.urlretrieve(link,filePath)

if __name__ == '__main__':
    downLoadAllImage()

注意代码格式,python代码结尾不用分号,但是对格式要求非常严格,少一个或者多一个Tap就报错。 终端运行 image.py 文件就开始自动下载图片了。(记得新建images存放图片的文件夹)