中国天气网城市代码爬取

本文讲述了作者如何使用Java爬虫技术从中国天气网获取城市代码,以替代过时的数据源。通过分析网页源码,发现了城市代码的组成规则,并利用httpClient和Jsoup解析网页。通过设置循环条件来优化爬取效率,最终获取了3231条不重复的城市代码记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  想试着收集一些气象数据,记得之前气象数据共享平台可以下,结果发现需要实名认证还要提交证件照之类的,想了想,脸黑,估计认证不过,还是算了。于是又网上找了找,发现在美国noaa网站可以下载,包含中国大概700多个站点的数据,时间从50年代一直到最近,但是细看了几个站点的数据后,发现有些站点数据只到2000年初或者更早。继续搜索后想到可以用爬虫,从天气网等网站爬取一些数据,考虑到权威性,选择了中国天气网。

目标网页

  目标网页主要是各个城市的天气页面,主要是当前天气,以及过去24小时天气,每个城市的网址为:
www.weather.com.cn/weather1d/+{城市代码}.shtml
  因此,首先需要找到各个城市的代码,从网上搜了一些后,发现这些可能时间较早,与现在网站上数据不能一一对应,所以考虑从网页中重新爬取到城市代码,顺便可以练习一下相关爬虫技术。
  网上搜到的爬虫案例大多基于python编写,但是个人最近刚看到一个用java爬取京东商品信息及图片的案例,因此想先用java试着爬取,个人感觉用python会显得更简洁,python代码可以很快的看到核心代码,而java,尤其是比较成熟的java代码,即使核心代码很短,却经常被包含在各种异常处理,各种线程,各种配置文件,各种分门别类里。
  话不多说,说城市代码的获取,在研究每个城市天气页面的源码时,发现在一个select的div下,有对应城市的各个区县的代码,比如在上海闵行的页面里,可以看到上海市的各个区县(下图)的城市代码及名称。
这里写图片描述
  再说城市代码的组成规则,前三位101代表中国,接下来的六位依次是省(自治区、直辖市、特区),地市以及区县,分别各占两位,直辖市区县最后两位都是0,真不明白为什么不直接用行政代码。

具体方法

  用到的技术主要是发送请求的httpClient以及解析网页的Jsoup。

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值