免费爬取天气数据常用的几个接口

博客介绍了免费获取天气数据的方法,包括通过城市ID和城市名称获取对应城市的天气状况,还可获取所有城市编码,为获取天气数据提供了实用途径。

1,通过城市ID获取该城市天气状况

http://wthrcdn.etouch.cn/weather_mini?citykey=101280601

2,通过城市名称获取该城市天气状况

http://wthrcdn.etouch.cn/weather_mini?city=北京

3,获取所有的城市编码

http://mobile.weather.com.cn/js/citylist.xml

 

### Python爬虫获取历史天气数据的方法 要实现通过Python编写爬虫程序来爬取历史天气数据,可以从以下几个方面入手: #### 1. 数据源选择 在爬取历史天气数据之前,需要选定合适的数据源。常见的公开气象数据网站有中国天气网、Weather Underground 或 NOAA 等。这些网站提供了丰富的历史天气记录,可以通过网页抓取或者API接口访问。 为了确保合法性,在爬取前需阅读目标站点的robots.txt文件以及服务条款[^1]。 --- #### 2. 使用requests库发送HTTP请求 `requests` 是一个强大的第三方库,用于向目标URL发起GET/POST请求并接收响应内容。以下是基本代码示例: ```python import requests def fetch_html(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } response = requests.get(url, headers=headers) if response.status_code == 200: return response.text else: raise Exception(f"Failed to load page: Status code {response.status_code}") ``` 此函数会返回指定 URL 的 HTML 文本内容,并设置了一个 User-Agent 来模拟浏览器行为[^2]。 --- #### 3. 正则表达式解析HTML页面 当面对复杂的嵌套结构时,正则表达式是一种简单而有效的工具。下面是一个基于正则表达式的例子,它从特定格式化的字符串中提取所需字段: ```python import re pattern = r'{(ymd.+?)}' # 定义匹配模式 data_list = [] def parse_data(html_content): matches = re.findall(pattern, html_content) for match in matches: record = {} fields = match.split(',') for field in fields: key, value = field.split(':') record[key.strip()] = value.strip().strip("'").strip('℃') data_list.append(record) parse_data(fetch_html("http://example.com/weather")) print(data_list[:5]) # 打印前五条记录作为验证 ``` 这里假设输入的 `html_content` 已经包含了类似 `{key:value}` 形式的键值对集合[^2]。 --- #### 4. 利用Pandas处理和存储数据 一旦完成初步的数据抽取工作之后,就可以借助 Pandas 库进一步整理清洗得到的结果集,并最终导出到 CSV 文件当中去。 ```python import pandas as pd df = pd.DataFrame(data_list) output_file = "./weather_history.csv" df.to_csv(output_file, index=False, encoding='utf_8_sig') print(f"Data successfully saved into '{output_file}'") ``` 这段脚本创建了一个 DataFrame 对象并将之转换成了表格形式;随后将其写入本地磁盘上的CSV文档里以便后续分析使用。 --- #### 注意事项 - **异常处理**:实际开发过程中不可避免会出现各种错误情况(比如网络超时),所以应该加入完善的 try-except 结构来进行捕获与反馈。 - **频率控制**:频繁地访问服务器可能会触发反爬机制甚至封禁IP地址,建议合理安排时间间隔或采用代理池技术规避风险。 - **法律合规性**:务必确认所使用的资源允许被自动化采集,尊重版权及相关法律法规的要求[^1]。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值