小程序开发定制爬虫:python如何获得天气数据

 1.小程序开发定制先安装以下库

  1. import requests
  2. from bs4 import BeautifulSoup as bs
  3. import pandas as pd
  4. from pandas import Series,DataFrame

2.爬取数据

2.1 小程序开发定制网站的内容

小程序开发定制主要是下方的天气情况

2.2小程序开发定制开始与网站获得连接

  1. 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',
  2. 'Host':'lishi.tianqi.com',
  3. 'Accept-Encoding': "gzip, deflate",
  4. 'Connection': "keep-alive",
  5. 'cache-control': "no-cache"}
  6. url='https://lishi.tianqi.com/ganyu/202208.html'%输入你想爬取地方的数据
  7. resp= requests.request("GET", url, headers=headers)
  8. resp

当出现<Response[200]>时,此刻以与网站连接成功

2.3对网页进行解析

 采用‘utf-8’来对爬去的信息进行解码,对网页解析用到BeautifulSoup库。

  1. resp.encoding = 'utf-8'
  2. soup = bs(resp.text,'html.parser')

 这里有网页里所有的内容。我们需要从这里提取出我们想要的内容。我们回到要爬取的网页,按F12可以在Elements里面看到网页的源码。

   了解过它的结构后,我们可以用BeautifulSoup里面的find和find_all来选取想要的内容。

  1. data_all=[]
  2. tian_three=soup.find("div",{"class":"tian_three"})
  3. lishitable_content=tian_three.find_all("li")
  4. for i in lishitable_content:
  5. lishi_div=i.find_all("div")
  6. data=[]
  7. for j in lishi_div:
  8. data.append(j.text)
  9. data_all.append(data)

 可以看一下现在的data_all的样子

 以为当天为 2022-08-21,所以当月数据到8月21日就截止了

 3 数据的整理与存储

给每一列附上列名

  1. weather=pd.DataFrame(data_all)
  2. weather.columns=["当日信息","最高气温","最低气温","天气","风向"]
  3. weather_shape=weather.shape
  4. weather

爬取weather的结果显示

 weather 表中当日信息为日期+星期,后期数据分析不大方便,所以要对数据处理

  1. weather['当日信息'].apply(str)
  2. result = DataFrame(weather['当日信息'].apply(lambda x:Series(str(x).split(' '))))
  3. result=result.loc[:,0:1]
  4. result.columns=['日期','星期']
  5. weather.join(result)

结果如下

 如果数据没有太多要求,此处就可以保存了,在csv中更改一下行列。

如果有要求参考如下

  1. weather['当日信息'].apply(str)
  2. result = DataFrame(weather['当日信息'].apply(lambda x:Series(str(x).split(' '))))
  3. result=result.loc[:,0:1]
  4. result.columns=['日期','星期']
  5. weather['风向信息'].apply(str)
  6. result1 = DataFrame(weather['风向信息'].apply(lambda x:Series(str(x).split(' '))))
  7. result1=result1.loc[:,0:1]
  8. result1.columns=['风向','级数']
  9. weather=weather.drop(columns='当日信息')
  10. weather=weather.drop(columns='风向信息')
  11. weather.insert(loc=0,column='日期', value=result['日期'])
  12. weather.insert(loc=1,column='星期', value=result['星期'])
  13. weather.insert(loc=5,column='风向', value=result1['风向'])
  14. weather.insert(loc=6,column='级数', value=result1['级数'])

这个时候weather显示为:结果展示已经相当的漂亮了

 最后就以csv格式直接保存文件了

weather.to_csv("XXX.csv",encoding="utf_8")

完整代码

  1. import requests
  2. from bs4 import BeautifulSoup as bs
  3. import pandas as pd
  4. from pandas import Series,DataFrame
  5. 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',
  6. 'Host':'lishi.tianqi.com',
  7. 'Accept-Encoding': "gzip, deflate",
  8. 'Connection': "keep-alive",
  9. 'cache-control': "no-cache"}
  10. url='https://lishi.tianqi.com/ganyu/202208.html'
  11. resp= requests.request("GET", url, headers=headers)
  12. resp.encoding = 'utf-8'
  13. soup = bs(resp.text,'html.parser')
  14. data_all=[]
  15. tian_three=soup.find("div",{"class":"tian_three"})
  16. lishitable_content=tian_three.find_all("li")
  17. for i in lishitable_content:
  18. lishi_div=i.find_all("div")
  19. data=[]
  20. for j in lishi_div:
  21. data.append(j.text)
  22. data_all.append(data)
  23. weather=pd.DataFrame(data_all)
  24. weather.columns=["当日信息","最高气温","最低气温","天气","风向信息"]
  25. weather_shape=weather.shape
  26. weather['当日信息'].apply(str)
  27. result = DataFrame(weather['当日信息'].apply(lambda x:Series(str(x).split(' '))))
  28. result=result.loc[:,0:1]
  29. result.columns=['日期','星期']
  30. weather['风向信息'].apply(str)
  31. result1 = DataFrame(weather['风向信息'].apply(lambda x:Series(str(x).split(' '))))
  32. result1=result1.loc[:,0:1]
  33. result1.columns=['风向','级数']
  34. weather=weather.drop(columns='当日信息')
  35. weather=weather.drop(columns='风向信息')
  36. weather.insert(loc=0,column='日期', value=result['日期'])
  37. weather.insert(loc=1,column='星期', value=result['星期'])
  38. weather.insert(loc=5,column='风向', value=result1['风向'])
  39. weather.insert(loc=6,column='级数', value=result1['级数'])
  40. weather.to_csv("XX的天气.csv",encoding="utf_8")

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发