Python选择性爬取网页图片并保存本地

Python选择性爬取网页图片并保存本地

刚学python不久,所以先记录一个爬取图片的方式,并保存本地指定路径下。当然不一定会是最简单的方式,但肯定是使用起来感觉最简单的。 做的不好,仅供参考。

首先需要安装几个模块:
打开电脑的命令提示符窗口(菜单键+R,输入cmd后回车即可)
Python选择性爬取网页图片并保存本地_第1张图片

其它模块都是内建模块,可以直接使用。

具体代码如下:(这里选用天堂图片网为基址爬取图片)

import requests
from lxml import etree
import os
from urllib.request import urlretrieve
#判断是否存在“所有图片”这个文件夹
if not os.path.exists("所有图片"):
    #如果不存在这个文件夹,则创建它。
    #创建“所有图片”文件夹
    os.mkdir("所有图片")
    #切换至“所有图片”文件夹下
    os.chdir("所有图片")
for page in range(1,2):#1为开始页,2为结束页
    print("正在下载第{}页图片".format(page))
    #使用for循环拼接出来前10页的网址
    url = "http://www.ivsky.com/tupian/index_{}.html".format(page)
    #对网页发起请求,拿到网页的源代码
    response = requests.get(url)
    #对网页源代码进行解析
    html_obj = etree.HTML(response.text)
    #获取a标签的一个列表
    a_list = html_obj.xpath('//ul[@class="ali"]/li/p/a')
    #遍历a标签
    for a in a_list:
        #获取小分类的地址,例如:/tupian/dulun_tuiche_v49859/
        href = a.xpath("@href")[0]
        #获取小分类的文本信息
        title = a.xpath("text()")[0]
        #http://www.ivsky.com/tupian/dulun_tuiche_v49859/
        abs_url = "http://www.ivsky.com"+href
        if not os.path.exists(title):
            os.mkdir(title)
            os.chdir(title)
        response = requests.get(abs_url)
        html_obj = etree.HTML(response.text)
        img_list = html_obj.xpath('//div[@class="il_img"]/a/img')
        for img in img_list:
            #获取图片地址
            src = img.xpath("@src")[0]
            #获取图片名称,通过split分割字符串取最后一部分内容
            name = src.split("/")[-1]
            #参数一:要下载的图片地址,参数二:要下载的图片名称
            urlretrieve(src,name)
        #没下载完一个分类,就切换到父级目录,继续下载其他分类图片
        os.chdir(os.pardir)

运行结果:
Python选择性爬取网页图片并保存本地_第2张图片

这样就可以在本地看到要爬取的图片了:

Python选择性爬取网页图片并保存本地_第3张图片
第一次 发做的不好 参考一下吧!

你可能感兴趣的:(Python基础)