热门标签 | 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()

    推荐阅读
    • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
      本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
    • Java 中重写与重载的区别
      本文详细解析了 Java 编程语言中重写(Override)和重载(Overload)的概念及其主要区别,帮助开发者更好地理解和应用这两种多态性机制。 ... [详细]
    • 深入理解Redis的数据结构与对象系统
      本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
    • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
    • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
    • ML学习笔记20210824分类算法模型选择与调优
      3.模型选择和调优3.1交叉验证定义目的为了让模型得精度更加可信3.2超参数搜索GridSearch对K值进行选择。k[1,2,3,4,5,6]循环遍历搜索。API参数1& ... [详细]
    • 微信小程序中实现位置获取的全面指南
      本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
    • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
    • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
    • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
    • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
    • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
    • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
    • Hybrid 应用的后台接口与管理界面优化
      本文探讨了如何通过优化 Hybrid 应用的后台接口和管理界面,提升用户体验。特别是在首次加载 H5 页面时,为了减少用户等待时间和流量消耗,介绍了离线资源包的管理和分发机制。 ... [详细]
    • 深入解析Redis内存对象模型
      本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
    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社区 版权所有