简单爬虫:爬取100张4K动漫图片

    科技2025-09-13  21

    简单爬虫:爬取100张4K动漫图片

    主要步骤:

    对指定url发送请求获取响应数据数据解析数据储存

    4K图片地址 1.分析每页url并获取响应数据

    第一页url:http://pic.netbian.com/4kdongman/ 第二页url:http://pic.netbian.com/4kdongman/index_2.html 第三页url:http://pic.netbian.com/4kdongman/index_3.html

    除了第一页,之后每一页只有index_不同。我们需要爬取前五页图片。 对url发出请求,并获取响应数据。

    url = 'http://pic.netbian.com/4kdongman/index_%d.html' # 设置请求头 headers = { 'Users-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36' } for page in range(1, 3): if (page == 1): new_url = 'http://pic.netbian.com/4kmeinv/' else: new_url = format(url % page) response = requests.get(url=new_url, headers=headers) response.encoding = 'gbk' # 设置获取响应数据的编码格式 page_text = response.text

    2.对网页进行解析解析找到图片名称及url 打开网页源码查看后,很明显的发现图片地址和图片的名称在img标签中,每一张图片的信息都在li标签中。其中图片地址需要添加前面缺省部分。我们用xpath方法首先获取li_list,再通过循环来获取每张图片的信息。

    # 数据解析 tree = etree.HTML(page_text) li_list = tree.xpath('//ul[@class="clearfix"]/li') # 获取li标签列表 img_list = [] img_name_list = [] for li in li_list: img_list.append(li.xpath('./a/img/@src')[0]) # 图片地址 img_name_list.append(li.xpath('./a/img/@alt')[0]) # 图片名 # 获取完整图片url img_url_list = [] for img_url in img_list: img_url_list.append('http://pic.netbian.com' + img_url)

    3.提取图片数据并保存到本地文件夹中 根据上面获得的图片地址,请求图片的二进制数据,再将其数据写入指定文件,创建一个文件夹用来保存图片。

    # 在当前目录下创建文件夹 isExists = os.path.exists('./4ktupian') if not isExists: os.makedirs('./4ktupian') # 提取图片数据 for i in range(len(img_url_list)): img_data = requests.get(url=img_url_list[i], headers=headers).content filePath = './4ktupian/' + img_name_list[i] + '.jpg' with open(filePath, 'wb')as fp: fp.write(img_data) print('%s,下载成功' % img_name_list[i])

    完整代码

    import requests from lxml import etree import os # 创建文件夹 isExists = os.path.exists('./4ktupian') if not isExists: os.makedirs('./4ktupian') url = 'http://pic.netbian.com/4kmeinv/index_%d.html' headers = { 'Users-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36' } for page in range(1, 3): if (page == 1): new_url = 'http://pic.netbian.com/4kmeinv/' else: new_url = format(url % page) response = requests.get(url=new_url, headers=headers) # 设置获取响应数据的编码格式 response.encoding = 'gbk' page_text = response.text # 数据解析 tree = etree.HTML(page_text) li_list = tree.xpath('//ul[@class="clearfix"]/li') img_list = [] img_name_list = [] for li in li_list: img_list.append(li.xpath('./a/img/@src')[0]) img_name_list.append(li.xpath('./a/img/@alt')[0]) # 获取完整图片url img_url_list = [] for img_url in img_list: img_url_list.append('http://pic.netbian.com' + img_url) # 提取图片数据 for i in range(len(img_url_list)): img_data = requests.get(url=img_url_list[i], headers=headers).content filePath = './4ktupian/' + img_name_list[i] + '.jpg' with open(filePath, 'wb')as fp: fp.write(img_data) print('%s,下载成功' % img_name_list[i])

    结果展示:

    Processed: 0.013, SQL: 8