Python选择性爬取网页图片并保存本地
Python选择性爬取网页图片并保存本地
刚学python不久,所以先记录一个爬取图片的方式,并保存本地指定路径下。当然不一定会是最简单的方式,但肯定是使用起来感觉最简单的。 做的不好,仅供参考。
首先需要安装几个模块:
打开电脑的命令提示符窗口(菜单键+R,输入cmd后回车即可)
其它模块都是内建模块,可以直接使用。
具体代码如下:(这里选用天堂图片网为基址爬取图片)
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)
运行结果:
这样就可以在本地看到要爬取的图片了:
第一次 发做的不好 参考一下吧!