在Python中使用request爬取图片,并保存。
需要注意的是,使用正则匹配时,可以先保存html的一页作为参考,再去对比图片链接的规则。
import re,requests
import os
url="https://www.4kbizhi.com"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36 Edg/104.0.1293.47"}
data1=requests.get(url=url,headers=headers) #发送请求
data1.encoding='utf-8'
print(data1.text)
if os.path.exists('./file')==False: #判断当前文件路径是否存在
os.mkdir('./file')
def parse(data):
urls = re.findall(r'',data) #(.*?)表示需要匹配的对象,可保存html文件的格式查看
print(urls)#正则匹配,查找图片链接地址,类型为[(1,2)]这种,需要遍历
for i in urls:
list='https://www.4kbizhi.com'+i[-1] #前面加上前缀,-1为索引最后一个
print(list)
rs=requests.get(list,headers=headers)
with open(f'./files/{i[-2]}.jpg','wb') as f: #以wb类型保存,i[-2]为图片名称
f.write(rs.content)
if __name__ == '__main__':
parse(data1.text)
for i in range(2,30):
url2 = f'https://www.4kbizhi.com/index_{i}.html' #从第二页开始,地址变为index_n
data2 = requests.get(url=url2, headers=headers) #重新发送地址请求
data2.encoding = 'utf-8'
parse(data2.text) #调用解析函数,要求是文本格式