全国各市区县7日天气数据爬取

全国各市区县7日天气数据爬取

设计思路(暂缺)

还没整理好语言

代码

导入库

import requests
import numpy as np
import pandas as pd
from bs4 import BeautifulSoup

获取网页链接

def getHTMLText(url, timeout=30):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return '产生异常'

获取网页源码

def get_html(html):
    final_list = []
    soup = BeautifulSoup(html, 'html.parser')
    body = soup.body
    return body

处理异常值函数,并且避免重复。不用set是因为网页害怕url抓取错误

def check_all(s,a):
    return  'None' in s or '详情' in s or s in a 

获取七天的天气数据

def get_data(html):
    final_list = []
    soup = BeautifulSoup(html, 'html.parser')
    body = soup.body
    data = body.find('div', {'id': '7d'})
    ul = data.find('ul')
    lis = ul.find_all('li')

    for day in lis:
        temp_list = []

        date = day.find('h1').string
        temp_list.append(date)

        info = day.find_all('p')
        temp_list.append(info[0].string)

        if info[1].find('span') is None:
            temperature_highest = ' '
        else:
            temperature_highest = info[1].find('span').string
            temperature_highest = temperature_highest.replace('℃', ' ')

        if info[1].find('i') is None:
            temperature_lowest = ' '
        else:
            temperature_lowest = info[1].find('i').string
            temperature_lowest = temperature_lowest.replace('℃', ' ')
            temp_list.append(temperature_highest)
            temp_list.append(temperature_lowest)

        wind_scale = info[2].find('i').string
        temp_list.append(wind_scale)
        final_list.append(temp_list)
    return final_list

获取所有省的url

url = 'http://www.weather.com.cn/textFC/hn.shtml'
html = getHTMLText(url)
final_list = get_html(html)
final_list=final_list.find('div', {'class': 'lqcontentBoxheader'})
final_list = final_list.find_all('li')
final_a=[]
add=[]
url=[]
s='http://www.weather.com.cn'
for x in final_list:
    list=x.find_all('a')
    for i in list:
        add.append(i.string)
        url.append(s+i.get('href'))
    final_a.append(list)
print(url)
print(add)

获取每个省各个市区县的url

count = 0
index=0
province_info={}
final_url=[]
final_city=[]
for i in url:
    a_url=i
    html = getHTMLText(a_url)
    final_list = get_html(html)
    final_list=final_list.find_all('div', {'class': 'conMidtab3'})
    # print(len(final_list))
    # print(final_list[0:len(final_list)])
    final_a=[]
    city=[]
    c_url=[]
    for i in final_list:
        s=i.find_all('a')
        for i in s:
            s=str(add[index])+'-'+str(i.string)
            if check_all(s,city):
                continue
            city.append(s)
            c_url.append(i.get('href'))
        final_a.append(s)
    final_url.append(c_url)
    final_city.append(city)
    count+=len(city)
    province_info[add[index]]=city
    index+=1
print(count)
print(final_city)
print(final_url)
print(province_info)

把各个标签映射成字典

final_city=[i for item in final_city for i in item]
final_url=[i for item in final_url for i in item]
final_dic=dict(zip(final_city,final_url))
print(final_dic)

遍历字典,获取各个县市七天的天气详情

final_result=[]
for key in final_dic:
    url =final_dic[key]
    html=getHTMLText(url)
    wether=get_data(html)
    tmp=[]
    for i in wether:
        result=[key]
        result=result+i
        tmp.append(result)
        print(result)
    final_result.append(tmp)
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 重庆市区县行政区的shp数据是指重庆市范围内各个县级行政区的空间数据文件,使用shp文件格式存储,包含了每个县级行政区的边界、面积、名称等信息。 shp文件是一种常用的地理信息系统数据格式,它以向量方式存储地理空间数据,可以在各种地理信息系统软件中进行编辑、显示和分析。 重庆市区县行政区的shp数据可以用于各种地理空间分析和可视化应用。例如,可以根据shp数据绘制重庆市各个县级行政区的边界,制作地图,方便人们了解重庆市的行政区划情况。 此外,shp数据还可以被用于空间分析,如计算重庆市各个县级行政区的面积、计算不同行政区之间的距离等。同时,还可以将shp数据与其他数据进行空间叠加分析,以便进行更深入的研究和决策支持。 总之,重庆市区县行政区的shp数据是一种非常有用和重要的地理信息数据资源,可以为各种地理信息应用提供支持,并为人们更好地了解和利用重庆市的行政区划信息提供基础。 ### 回答2: 重庆市区县行政区shp数据是指重庆市下辖各个区县的行政区划边界数据,在GIS(地理信息系统)中以shp格式存储。shp文件是一种常用的地理信息数据格式,包含了几何形状、属性信息和空间参考等数据。 重庆市作为中国的直辖市,下辖38个区县,每个区县都有自己的边界范围。重庆市区县行政区shp数据可以用于各种地理信息应用中,比如地图制作、空间分析、区域规划等。 利用重庆市区县行政区shp数据,可以进行以下操作: 1. 地图制作:将shp数据导入地理信息软件,可以生成重庆市各个区县的边界图,用于地理信息可视化。 2. 空间查询:通过shp数据的属性信息,可以进行空间查询,比如查询某个区县的人口数量、面积等信息。 3. 空间分析:利用重庆市区县行政区shp数据,可以进行空间分析,比如计算不同区县之间的距离、面积、交叉等,以便于区域规划和决策。 4. 空间展示:将shp数据与其他统计数据结合,可以生成各种统计图表与地图,用于数据展示与分析。 总之,重庆市区县行政区shp数据是一种重要的地理信息数据,对于了解和研究重庆市的行政区划、区域特征以及进行空间分析具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值