热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python爬取中国天气网指定城市天气

功能:输入城市名称,得到该城市天气以及天气更新时间,还可根据需要决定是否查看更多天气信息。效果:完整代码:importpandasaspdimportrequestsimportr

功能:
输入城市名称,得到该城市天气以及天气更新时间,还可根据需要决定是否查看更多天气信息。
效果:
《Python爬取中国天气网指定城市天气》
完整代码:

import pandas as pd
import requests
import re
#创建一个字典存储中国天气网城市代码
def createCityCode():
fh = r'text\中国天气网城市代码.csv'
data = pd.read_csv(fh,engine='python')
data = data.dropna()
# print(data)
cityCodeDict = {}
for name,code in zip(data['城市名称'],data['城市代码']):
cityCodeDict[name] = code
# print(cityCodeDict)
return cityCodeDict
#天气爬虫
def spider(url,headers):
respOnse= requests.get(url,headers)
cOntent= response.content.decode('utf-8')
pat_weather = re.compile('')
pat_up_time = re.compile('')
weather = pat_weather.findall(content)
up_time = pat_up_time.findall(content)
print(weather[0])
print('更新时间:',up_time[0])
ask_ok = input('是否深入查看(Y/N):')
if ask_ok == 'Y' or ask_ok == 'y':
pat_more_weather = re.compile('

  • .(.*?)\n(.*?)\n

    (.*?)

    .*?\n
  • ',re.S)
    more_weather = pat_more_weather.findall(content)
    for item in more_weather:
    if item[1] != '减肥指数':
    print(item[1],':',item[0],',',item[2])
    else:
    print(item[1],':',item[2])
    def main():
    cityCodeDict = createCityCode()
    headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.7'
    }
    while (True):
    try:
    cityName = input('请输入城市名称(按q/Q键退出):')
    if cityName == 'q' or cityName == 'Q':
    break
    # print(cityCodeDict[cityName])
    cityCode = cityCodeDict[cityName] #得到城市代码
    url = 'http://www.weather.com.cn/weather1d/%d.shtml' % cityCode #得到城市天气网址
    # print(url)
    spider(url,headers)
    except:
    print('未查到%s城市,请重新输入:'%cityName)
    if __name__ == '__main__':
    main()

    推荐阅读
    • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
    • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
      大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
    • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
    • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
      在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
    • 如何高效启动大数据应用之旅?
      在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
    • Python 序列图分割与可视化编程入门教程
      本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
    • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
      在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
    • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
      本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
    • 每年,意甲、德甲、英超和西甲等各大足球联赛的赛程表都是球迷们关注的焦点。本文通过 Python 编程实现了一种生成赛程表的方法,该方法基于蛇形环算法。具体而言,将所有球队排列成两列的环形结构,左侧球队对阵右侧球队,首支队伍固定不动,其余队伍按顺时针方向循环移动,从而确保每场比赛不重复。此算法不仅高效,而且易于实现,为赛程安排提供了可靠的解决方案。 ... [详细]
    • Squaretest:自动生成功能测试代码的高效插件
      本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
    • 本文探讨了利用Python实现高效语音识别技术的方法。通过使用先进的语音处理库和算法,本文详细介绍了如何构建一个准确且高效的语音识别系统。提供的代码示例和实验结果展示了该方法在实际应用中的优越性能。相关文件可从以下链接下载:链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ,提取码:p57s。 ... [详细]
    • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
      本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
    • Netty框架中运用Protobuf实现高效通信协议
      在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
    • 探索聚类分析中的K-Means与DBSCAN算法及其应用
      聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
    • 基于收支数据的聚类分析研究
      通过对收支数据进行聚类分析,研究发现聚类结果的解释和验证是关键步骤。为了确保分群的合理性和有效性,需要结合业务背景和实际需求,灵活选择合适的聚类数量。该研究利用Python中的Pandas和Matplotlib库对数据进行了预处理和可视化,为决策提供了科学依据。 ... [详细]
    author-avatar
    大眼睁睁
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有