Python爬取天气图片
1. 简介
天气预报是人们生活中常用的信息之一,我们经常使用手机APP或者网站来查看天气情况。有时候我们想要保存一些特别的天气图片,比如美丽的日出、雨后的彩虹等。本文将介绍如何使用Python爬取天气图片,并保存到本地。
2. 准备工作
在开始之前,我们需要准备以下工具和环境:
- Python:本文使用Python 3.x版本;
- 网络爬虫库:本文使用
requests
库来发送HTTP请求,beautifulsoup4
库用于解析HTML页面; - 图片处理库:本文使用
Pillow
库来处理图片。
你可以使用以下命令来安装这些库:
pip install requests
pip install beautifulsoup4
pip install Pillow
3. 爬取天气图片
3.1 分析目标网站
我们选择爬取一个天气预报网站的图片作为示例。在开始之前,我们需要先观察目标网站的HTML结构。通过查看网页源代码,我们可以找到图片所在的HTML标签和属性。
3.2 发送HTTP请求
使用requests
库发送HTTP请求,获取目标网页的HTML内容。以下是示例代码:
import requests
url = " # 替换为目标网站的URL
response = requests.get(url)
html = response.text
3.3 解析HTML页面
使用beautifulsoup4
库来解析HTML页面,并提取出图片的URL。以下是示例代码:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
img_tags = soup.find_all("img")
image_urls = []
for img in img_tags:
image_urls.append(img["src"])
3.4 下载图片
利用解析得到的图片URL,使用requests
库下载图片,并保存到本地。以下是示例代码:
import os
save_dir = "images" # 图片保存的目录,可以修改为你想要保存的路径
os.makedirs(save_dir, exist_ok=True)
for url in image_urls:
response = requests.get(url, stream=True)
filename = url.split("/")[-1]
save_path = os.path.join(save_dir, filename)
with open(save_path, "wb") as f:
for chunk in response.iter_content(1024):
f.write(chunk)
3.5 完整代码
以下是完整的爬取天气图片的代码:
import os
import requests
from bs4 import BeautifulSoup
def crawl_weather_images(url, save_dir):
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, "html.parser")
img_tags = soup.find_all("img")
image_urls = []
for img in img_tags:
image_urls.append(img["src"])
os.makedirs(save_dir, exist_ok=True)
for url in image_urls:
response = requests.get(url, stream=True)
filename = url.split("/")[-1]
save_path = os.path.join(save_dir, filename)
with open(save_path, "wb") as f:
for chunk in response.iter_content(1024):
f.write(chunk)
if __name__ == "__main__":
url = " # 替换为目标网站的URL
save_dir = "images" # 图片保存的目录,可以修改为你想要保存的路径
crawl_weather_images(url, save_dir)
4. 类图
以下是爬取天气图片的类图:
classDiagram
class WeatherImageCrawler {
+crawl_weather_images(url: str, save_dir: str): None
}
5. 序列图
以下是爬取天气图片的序列图:
sequenceDiagram
participant User
participant WeatherImageCrawler
participant requests
participant BeautifulSoup
participant os
User->>WeatherImageCrawler: crawl_weather_images(url, save_dir)
WeatherImageCrawler->>requests: get(url)
requests->>WeatherImageCrawler: response
WeatherImageCrawler->>BeautifulSoup: BeautifulSoup(html)
BeautifulSoup->>WeatherImageCrawler: soup
WeatherImageCrawler->>soup: find_all("img")
soup->>WeatherImageCrawler: img_tags
WeatherImageCrawler->>img_tags: loop through
img_tags->