您的当前位置:首页正文

爬虫未来15天天气数据

来源:九壹网

气数据对于许多应用领域都非常重要,如旅游规划、农业生产、气象预测等。使用Python爬虫可以方便地从各种天气网站上获取实时的天气数据。本文将介绍如何使用Python爬虫实战来爬取天气数据,帮助您在自己的项目中快速获取天气信息。
1.确定目标网站和URL
首先,我们需要确定一个可靠的天气网站作为数据源。一些常见的天气网站包括中国气象局、Weather.com、AccuWeather等。选择一个合适的网站后,我们可以通过查看网页的源代码来获取天气数据的URL。
2.发起HTTP请求
使用Python的requests库,我们可以方便地发起HTTP请求。根据目标网站的要求,构造一个GET请求,并设置好请求头,包括User-Agent等信息。通过发送HTTP请求,我们可以获取到服务器返回的HTML页面。
3.解析HTML页面
使用Python的第三方库如BeautifulSoup或内置库如re,我们可以解析HTML页面,提取出我们需要的天气数据。通过分析HTML标签的结构和属性,我们可以定位到包含天气数据的标签,并从中提取出具体的天气信息。
4.数据处理和存储
获取到天气数据后,我们可以对其进行进一步的处理和分析。例如,可以提取出温度、湿度、风速等具体的指标,并进行数据可视化或存储到数据库中。这样,我们就可以根据需求来使用和展示这些天气数据。
5.定期更新和自动化
由于天气数据是实时变化的,我们可以设置定期运行爬虫程序,以获取最新的天气信息。通过编写自动化脚本,我们可以实现定时运行爬虫程序,并将更新后的天气数据发送给相关人员或应用系统。
使用Python爬虫实战爬取天气数据可以让我们快速获取实时的天气信息。通过选择合适的天气网站,发起HTTP请求并解析HTML页面,我们可以方便地获取到所需的天气数据,并进行进一步的处理和存储。希望本文能够帮助您掌握Python爬虫技术,实现天气数据的自动获取和应用。​​​​

下面是代码分享

# # -*- coding: UTF-8 -*-
# import requests
# import json
# lat = '34.036080833'
# lng = '108.759264000'
# lng = str(lng)
# lat = str(lat)
# ak = '你的百度地图AK'
# output = 'json'
# list = {'location':lat +','+ lng,'ak':ak,'output':output}
# res = requests.get(url='http://api.map.baidu.com/geocoder/v2/', params=list)
# result = res.json()
# print(result)
# city = result['result']['addressComponent']['city']
# print('省区:'+city)
# district = result['result']['addressComponent']['district']
# print('县区:'+ district)
# print("-------------------------------")
# tianqi = requests.get(url="http://wthrcdn.etouch.cn/weather_mini?city="+district)
# data = tianqi.json()
# print(data)
# high =data['data']['wendu']
# print('温度:'+high +'℃')
 
 
 
 
# -*- coding: UTF-8 -*-
import requests
import csv
import random
import time
import socket
import pandas as pd
from bs4 import BeautifulSoup
import urllib
 
 
import re
import random
def getHTMLtext(city_code):
    # http://www.weather.com.cn/data/cityinfo/101110101.html
    # http://www.weather.com.cn/weather/101110101.shtml
    # url = f'http://www.weather.com.cn/data/cityinfo/{city_code}.html'
    url = f'http://www.weather.com.cn/weather/{city_code}.shtml'
    response = urllib.request.urlopen(url)
    content = response.read().decode('utf-8')
    #print("网页内容",content)
    return content
 
 
  
# 查询城市代码
def search_city_code(city_name):
    city_code = '-1'
  
    df = pd.read_json('city_code.json')
    for row in df.values:
        row_data = row[0]
        city_data = row_data['市']
        for cd in city_data:
            # print(cd['市名'], cd['编码'])
            if (city_name == cd['市名'] or cd['市名'] in city_name):
                city_code = cd['编码']
                break
    print("城市名字",city_name,"城市代码",city_code)
    return city_code
  
 
def get_data(html_text):
    final = []
    bs = BeautifulSoup(html_text, "html.parser")# 创建BeautifulSoup对象
    body = bs.body # 获取body部分
    data = body.find('div', {'id':'7d'}) # 找到id=7d的div
    ul = data.find('ul', {'class':'t clearfix'})
    li = ul.find_all('li')
    # print li
  
    for day in li: # 对每个li标签中的内容进行遍历
        temp = []
        # 这里有问题
        date = day.find('h1').string # 找到日期
        temp.append(date)
        inf = day.find_all('p') # 找到li标签中所有的p标签
        temp.append(inf[0].string) # 将第一个p标签中的内容(天气状况)加入到temp中
        if inf[1].find('span') is None:
            temperature_higgest = None # 天气预报可能没有当天的最高气温(到了傍晚,就是这样),需要加一个判断,来输出最低气温
        else:
            temperature_higgest = inf[1].find('span').string # 找到最高气温
            # temperature_higgest = temperature_higgest.replace('℃', '') # 到了晚上网站内容会有变动,去掉这个符号
        temperature_lowest = inf[1].find('i').string # 找到最低温度
        # temperature_lowest = temperature_lowest.replace('℃', '')
        temp.append(temperature_higgest)
        temp.append(temperature_lowest)
        final.append(temp)
    print("天气结果",final)
    return final
 
'''
 
if __name__ == '__main__':
    city_name_list = ['重庆']  # 获取以上五个城市天气数据
    #for cn in city_name_list:
    city_code = search_city_code(city_name_list[0])
     
    html_str = getHTMLtext(city_code)
    result = get_data(html_str)  # 获得1-7天和当天的数据
         
'''

因篇幅问题不能全部显示,请点此查看更多更全内容

Top