Python获取多个城市多个年份天气状况

该博客介绍了一个Python爬虫项目,用于抓取指定城市(如南昌)特定年份(如2020年)的历史天气数据。通过解析网页URL变化,使用requests和BeautifulSoup库提取并解析数据,然后将结果存储到文本文件中,包括城市、日期、星期、最高温度、最低温度和天气等信息。
摘要由CSDN通过智能技术生成

一、效果图

在这里插入图片描述

二、命令

pip install beautifulsoup4
pip install pypinyin
pip install requests
pip install urllib3

三、思路

  1. 解析指定网站内,选择具体城市和年份选择后的网址的变化
  2. 手动拼接网址,将拼接完的网址放到数组内
  3. 使用requests包进行请求网址,获取源码
  4. 使用beautifulsoup进行解析
  5. 写到文本内

四、具体代码实现

#encoding:utf-8
import requests
from bs4 import BeautifulSoup
import pypinyin
import random
import urllib
import urllib.request
import re

import sys

headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
urllist=[]
def get_data():
	file = open('all_city_weather.txt','a+',newline='')
	file.writelines("城市,日期,星期,最高温度,最低温度,天气,风向"+"\n")
	for url in urllist:
		real_url = url.split(",")[1]
		print(real_url);
		response = requests.get(real_url,headers=headers)
		soup = BeautifulSoup(response.text, 'html.parser')
		weather_list = soup.select('div[class="tian_three"]')
		for weather in weather_list:
			ul_list = weather.select('ul')
			for ul in ul_list:
				li_list= ul.select('li')
				for li in li_list:
					div_list = li.select('div')
					string_div = f'''{url.split(",")[0]},'''
					for div in div_list:
						row_data = div.string
						if "℃" in row_data:
							string_div += f'''{row_data},'''
						elif " 星期" in row_data:
							data = row_data.split(" ")[0]
							week = row_data.split(" ")[1]
							string_div += f'''{data},'''
							string_div += f'''{week},'''
						else:
							string_div += f'''{row_data}'''
					print(string_div)
					file.writelines(string_div+"\n")
	file.close()
def main(areas,years):
	for area in areas:
		area_pinyin = pypinyin.slug(area, separator='')
		for year in years:
			for month in range(1,13):
				urllist.append("%s,http://lishi.tianqi.com/%s/%d%02d.html"%(area,area_pinyin,year,month))
	get_data()

if __name__ == '__main__':
	areas = ["南昌"]
	years = [2020]
	main(areas,years)

五、使用

1. 可在areas内指定具体城市,目前仅有“南昌”
2. 可在years内指定具体年份,目前仅有“2020”
3. 目前运行结果存储到同脚本文件相同路径内的“all_city_weather.txt”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倾云鹤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值