Python爬取图片之“站长素材”
发布于 2021-10-11 14:04
2、通过查看源码发现,编码格式是"utf-8"。
3、通过搜索图片标签,发现图片存储是唯一性,给我们提取图片链接的带来方便,只使用re来提取,就能快速提取出来,还有图片标题。
B 演示步骤:
1、观察页面变化:
4、观察图片标签存储格式。
import re
import os
import random
import requests
headers ={}
def header():
#随机分配一个请求头
UA = [
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
"Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
]
nu_m =random.randint(0,len(UA)-1) #u-a随机分配
headers["User-Agent"] = UA[nu_m]
return headers
def content_data(url):
#返回二进制数据
res = requests.get(url,headers=header(),timeout=15)
if res.status_code == 200:
return res.content #返回二进制数据
def soup(data):
#解析数据,提取图片链接,替换图片链接,存入列表里,返回列表
text = data.decode('utf-8') #由于本网页返回的编码是utf-8,所以解码也用相同的编码方式
text = re.sub(r'\s','',text) #把所有空格、换行符替换成空
text = re.sub(r'\/\/','https://',text) #增加请求头
src = re.findall(r'src2="(.*?)"',text) #提取链接
return src
def save(name,title,data):
file_path= os.getcwd()+"\\"+name #定义目录
if not os.path.exists(file_path): #创建保存目录
os.makedirs(file_path)
file_path += "\\{}.jpg".format(title[0]) #title 是列表,提取第一数字
with open(file_path,'wb') as f:
f.write(data)
print(title[0])
def save_data(img_src,name,title):
#提取单个src地址
for src in img_src:
data = content_data(src) #返回图片二进制数据
save(name,title,data) #保存图片数据
title[0] += 1 #作用是防止文件名重复
def main():
base = "https://sc.chinaz.com/tupian/index_{}.html" #定义链接规则
name = "站长素材高清图片"
title = [0]
for i in range(1, 2518): #2518
if i == 1:
url = "https://sc.chinaz.com/tupian/index.html" #访问第一页面地址
else:
url = base.format(i) #第二页开始有规律变化页面地址
data = content_data(url) #第一次返回二进制数据
img_src = soup(data) #返回列表,要下载的图片链接地址
headers['referer'] = url #定义防盗链地址
save_data(img_src,name,title) #进入翻页所有链接的数据保存阶段。
if __name__ == "__main__":
main() #启动程序
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材