celebs名人写真图片数据采集,先下载100个G再说
Posted 五包辣条!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了celebs名人写真图片数据采集,先下载100个G再说相关的知识,希望对你有一定的参考价值。
大家好,我是辣条。
今天给大家带来一个宝藏网站,国外名人明星的写真图片网站,冒着进小黑屋的风险出爬虫实战,仅供学习交流!侵删!希望大家给个三连支持。
采集目标
数据来源: celebs-place
工具准备
开发环境:win10、python3.7
开发工具:pycharm、Chrome
使用工具包:requests,lxml, os
项目思路
网页图片数据量过大,以单独的一项展示学习 选取单独的A分类
requests发送网络请求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
}
url = 'https://celebs-place.com/photos/people-A.html'
response = requests.get(url, headers=headers)
xpath提取对应明星a标签的href属性和明星名字
html_data = etree.HTML(response.text)
celebs_url_list = html_data.xpath('//div[@class="model_card"]/a/@href')
name_list = html_data.xpath('//div[@class="model_card"]/a/div/span/text()')
拼接详情页面url地址, 判断是否能获取数据 提取详情页面所以的url地址 (“你问为啥不获取具体的页数,因为懒!!!!”)
for page in range(1, 50):
url_detail = 'https://celebs-place.com' + celebs_url + 'page{}/'
res = requests.get(url_detail.format(page), headers=headers).text
# print(res)
data = etree.HTML(res)
img_url_list = data.xpath("//div[@class='gallery-p![在这里插入图片描述](https://img-blog.csdnimg.cn/20210520194629112.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MDc1MTE4,size_16,color_FFFFFF,t_70)
ics-list'][1]/div/a/img/@src")
if not img_url_list:
break
保存的文件夹可以手动创建(最好是代码创建,避免各位大佬在使用代码时有不必要的纠纷 狗头保命)
path = "你的文件路径"
if not os.path.exists(path):
os.mkdir(path)
获取的图片url是小图标的 详细的图片是大图 去除图片url的/cache和后半部分就是大图url(‘-gthumb-gwdata240-ghdata300.jpg’) 提取到准确的图片url地址 请求图片数据,保存对应图片到文件夹
for img_url in img_url_list:
img = "https://celebs-place.com/" + img_url.split('-g')[0].split('/cache/')[1] + '.jpg'
result = requests.get(img, headers=headers).content
当前网页图片的数据量比较大,有几百G,没有特别需要图片数据的可以和辣条一样做一个文明的爬虫君。
项目思路总结
-
获取到对明星的分类
-
requests发送网络请求
-
xpath提取数据
-
保存数据到文件
简易源码分享
from lxml import etree
import requests
import os
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
}
url = 'https://celebs-place.com/photos/people-A.html'
response = requests.get(url, headers=headers)
# print(response.text)
html_data = etree.HTML(response.text)
celebs_url_list = html_data.xpath('//div[@class="model_card"]/a/@href')
name_list = html_data.xpath('//div[@class="model_card"]/a/div/span/text()')
for celebs_url, celebs_name in zip(celebs_url_list, name_list):
path = r'E:\\python_project\\vip_course\\celebs_place\\img' + "\\\\" + celebs_name
if not os.path.exists(path):
os.mkdir(path)
num = 0
for page in range(1, 20):
url_detail = 'https://celebs-place.com' + celebs_url + 'page{}/'
res = requests.get(url_detail.format(page), headers=headers).text
# print(res)
data = etree.HTML(res)
img_url_list = data.xpath("//div[@class='gallery-pics-list'][1]/div/a/img/@src")
if not img_url_list:
break
# print(img_url)
for img_url in img_url_list:
img = "https://celebs-place.com/" + img_url
result = requests.get(img, headers=headers).content
f = open(path + "\\\\" + str(num) + ".jpg", "wb")
f.write(result)
num += 1
print("正在下载{}第{}页第{}张".format(celebs_name, page, num))
以上是关于celebs名人写真图片数据采集,先下载100个G再说的主要内容,如果未能解决你的问题,请参考以下文章
NBA大数据!美媒公布现役球星名人堂概率,欧文乐福不足80%,两人100%入选!