0


pycharm爬虫教学,爬取中国天气网数据并进行数据可视化分析

一.开发工具pycharm

    自己下载就行了,这里up不多做赘述了,我们中心放在代码阶段

二.首先要准备好几个需要的包在pycharm终端输入

    pip install bs4

    pip install pandas

    一般下载会特别慢或者报错,这里还有另外一种方法就是使用Anaconda3 (64-bit)来进行下载

打开Anaconda3 Navigator 点击Environments在右边搜索栏搜索下载即可 点击apply

三.代码部分

头文件调用的包

import requests
import pymysql
import os
from pyecharts.charts import Line
from pyecharts import options as opts
from pyecharts.charts  import Bar, Pie,Line,Map,Gauge #柱状图
from pyecharts import options as opts#导入配置项
from bs4 import BeautifulSoup as bs
import pandas as pd
from pandas import Series,DataFrame
#代码主体部分

headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.63',
        'Host':'lishi.tianqi.com',
        'Accept-Encoding': "gzip, deflate",
        'Connection': "keep-alive",
        'cache-control': "no-cache"} 
     #headers是初级爬虫用来伪装成浏览器访问的手段 我这里模仿是谷歌
url='https://lishi.tianqi.com/wuhan/202405.html'
resp= requests.request("GET", url, headers=headers)
resp.encoding = 'utf-8'
soup = bs(resp.text,'html.parser')
data_all=[]
tian_three=soup.find("div",{"class":"tian_three"})
lishitable_content=tian_three.find_all("li")
for i in lishitable_content:
    lishi_div=i.find_all("div")
    data=[]
    for j in lishi_div:
        data.append(j.text)
    data_all.append(data)
weather=pd.DataFrame(data_all)
weather.columns=["当日信息","最高气温","最低气温","天气","风向信息"]
weather_shape=weather.shape
weather['当日信息'].apply(str)
result = DataFrame(weather['当日信息'].apply(lambda x:Series(str(x).split(' '))))
result=result.loc[:,0:1]
result.columns=['日期','星期']
weather['风向信息'].apply(str)
result1 = DataFrame(weather['风向信息'].apply(lambda x:Series(str(x).split(' '))))
result1=result1.loc[:,0:1]
result1.columns=['风向','级数']
weather=weather.drop(columns='当日信息')
weather=weather.drop(columns='风向信息')
weather.insert(loc=0,column='日期', value=result['日期'])
weather.insert(loc=1,column='星期', value=result['星期'])
weather.insert(loc=5,column='风向', value=result1['风向'])
weather.insert(loc=6,column='级数', value=result1['级数'])
weather.to_csv("XX的天气.csv",encoding="utf-8")

如果你到这里没有报错,恭喜你已经成功爬取了数据,但是如何获取实时的数据呢?

如何爬取我想要的城市数据呢?

url='https://lishi.tianqi.com/wuhan/202405.html'

你需要修改这一行代码 我这里是武汉市并且爬取的是2024.5月份数据

运行完会在列表中生成一个csv文件

weather.to_csv("XX的天气.csv",encoding="utf-8")我这里命名的是”xx的天气“

四.数据分析以及可视化

这里你可以使用两种方法
我这里使用的是pyecharts的方法,具体的包在最开始我已经引用了
weather_data = pd.read_csv("XX的天气.csv", encoding="utf-8")
list_top = list(weather_data['最高气温'])
list_low = list(weather_data['最低气温'])
for i in range(len(list_top)):
    list_top[i] = list_top[i].replace("℃", "")
#因为折线图只能读取int整型而我们爬取数据为xx℃,因此我们需要将其替换,或者将数据强转为整型
#但我已经试过了不行,所以就只能替换了
    list_low[i] = list_low[i].replace("℃", "")

print(weather_data)

line = (
    Line()
    .add_xaxis(list(weather_data['日期']))
    .add_yaxis("最高气温", list_top, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]))
    .add_yaxis("最低气温", list_low, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min")]))
    .set_global_opts(title_opts=opts.TitleOpts(title="XX城市近期天气变化"), xaxis_opts=opts.AxisOpts(name="日期"), yaxis_opts=opts.AxisOpts(name="温度(℃)"))
)

# 渲染图表
line.render("weather_line_chart.html")
os.system("weather_line_chart.html")

到此就结束了,会在浏览器自动生成折线图


本文转载自: https://blog.csdn.net/2301_78366215/article/details/139127989
版权归原作者 单片机初学man 所有, 如有侵权,请联系我们删除。

“pycharm爬虫教学,爬取中国天气网数据并进行数据可视化分析”的评论:

还没有评论