怎么利用python多线程爬取天气网站图片并保存
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍了怎么利用python多线程爬取天气网站图片并保存,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.1 题目指定一个网
千家信息网最后更新 2025年01月22日怎么利用python多线程爬取天气网站图片并保存1.2 思路
1.2.2 解析网页
1.2.3 获取结点
这篇文章主要介绍了怎么利用python多线程爬取天气网站图片并保存,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
1.1 题目
指定一个网站,爬取这个网站中的所有的所有图片,例如中国气象网(www.weather.com.cn),分别使用单线程和多线程的方式爬取。(限定爬取图片数量为学号后3位)
输出信息: 将下载的Url信息在控制台输出,并将下载的图片存储在images子文件中,并给出截图。
1.2 思路
1.2.1 发送请求
构造请求头
import requests,reimport urllibheaders = { 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Language': 'zh-CN,zh;q=0.9',}url = "http://www.weather.com.cn/"request = urllib.request.Request(url, headers=headers)
发送请求
request = urllib.request.Request(url, headers=headers)r = urllib.request.urlopen(request)
1.2.2 解析网页
页面解析,并且替换回车,方便后续进行正则匹配图片。
html = r.read().decode().replace('\n','')
1.2.3 获取结点
使用正则匹配,先获取所有的a标签,然后爬取a标签下面的所有图片
urlList = re.findall('获取所有的图片
allImageList = []for k in urlList: try: request = urllib.request.Request(k, headers=headers) r = urllib.request.urlopen(request) html = r.read().decode().replace('\n','') imgList = re.findall(r'这里的请求其实也是要用多线程爬取的,所有后续会补上!
1.2.4 数据保存 (单线程)
for i, img in enumerate(allImageList[:102]): print(f"正在保存第{i + 1}张图片 路径:{img}") resp = requests.get(img) with open(f'./image/{img.split("/")[-1]}', 'wb') as f: # 保存到这个image路径下 f.write(resp.content)1.2.4 数据保存 (多线程)
引入多进程模块
import threading# 多线程def download_imgs(imgList,limit): threads = [] T = [ threading.Thread(target = download, args=(url,i)) for i, url in enumerate(imgList[:limit + 1]) ] for t in T: t.start() threads.append(t) return threads编写下载函数
def download(img_url,name): resp = requests.get(img_url) try: resp = requests.get(img_url) with open(f'./images/{name}.jpg', 'wb') as f: f.write(resp.content) except Exception as e: print(f"下载失败: {name} {img_url} -> {e}") else: print(f"下载完成: {name} {img_url}")就很随机
感谢你能够认真阅读完这篇文章,希望小编分享的"怎么利用python多线程爬取天气网站图片并保存"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
图片
线程
网站
篇文章
天气
信息
数据
标签
正则
路径
输出
价值
兴趣
函数
同时
学号
思路
截图
控制台
数量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
现代战争5服务器
原神游戏服务器ip地址
如何加速软件开发效率
从服务器拿出来的代码乱码
原神b站服务器怎么登陆ios
软件开发 公司 接单
网络安全和游戏后端开发
串口终端服务器多少钱
南京炒股的软件开发公司
公司搭建服务器教程
戴尔r740服务器硬盘启动
什么是网络安全的发展方向
蚌埠软件开发需要多少钱
软件开发师周爱民
2022年首都网络安全日主题
数据库开发应聘简历
徐州老司机网络技术公司
中职升学考试数据库基础知识
注册软件开发平台
实时数据库设计
源表软件开发
服装秀视频软件开发
软件开发最低工资
怀柔区信息网络技术服务系统
王牌战争服务器维护是什么意思
顺义区专业性软件开发质量服务
数据库技术与应用实训教程
锐思数据库中的产权性质
深圳市网络安全工程师培训
提高未成年人网络安全