精华内容
下载资源
问答
  • 这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单。这段代码可以获取当地的天气和、任意城市的天气预报,原理是根据url找到网站截取相应的数据展现。 python抓取广州天气并分析 实例...
  • python写的抓取天气预报的脚本

    千次阅读 2010-03-09 00:53:00
    python写的抓取天气预报的脚本http://blog.chinaunix.net/u2/82009/showart_2166843.html 从昨天开始的看关于网络抓取的东西,而且自己的用的是awesome ,所以写了这个天气预报的脚本给我的awesome,这个天气脚本...

    用python写的抓取天气预报的脚本

    http://blog.chinaunix.net/u2/82009/showart_2166843.html

     

    从昨天开始的看关于网络抓取的东西,而且自己的用的是awesome ,所以写了这个天气预报的脚本给我的awesome,这个天气脚本直接取下来的话是七天的天气预报从中国天气网上,我后面对它做了处理,用到了我的awesome上
    效果:1日星期一夜间 阴 低温 4℃ 无持续风向 微风 | 2日星期二 小雨 --> 雨夹雪 3℃ --> 6℃ | 3日星期三 雨夹雪 1℃ --> 5℃
    我只取了三天的预报,三天已经够了,下面程序的注释 英文实在有点过不了关

    ================================================

    #!/usr/bin/env python
    # weather html parser

    from HTMLParser import HTMLParser
    import sys,urllib2,string,re

    # define a class to parser a html
    class HtmlParser(HTMLParser):
        def __init__(self):
            self.data=''
            self.readingdata=0
            HTMLParser.__init__(self)

        def handle_starttag(self,tag,attrs):
            if tag == 'td':
                self.readingdata=1
        def handle_data(self,chars):
            if self.readingdata:
                self.data+=chars

        def handle_endtag(self,tag):
            if tag=='td':
                self.readingdata=0
        def cleanse(self):
            self.data = re.sub('/s+',' ', self.data)
        def getdata(self):
            self.cleanse()
            return self.data

    # this url is a place where you want to know the weather forecast
    url="http://www.weather.com.cn/html/weather/101210501.shtml"
    req=urllib2.Request(url)
    fd=urllib2.urlopen(req)
    tp=HtmlParser()
    tp.feed(fd.read())
    weather=tp.getdata()
    # when you are getting a weather after parsering
    # this weather string have 7 days weather forecast
    # the following if for my awesome format
    weather=weather.split()
    tag=[weather.index(i) for i in weather if '/xe6/x97/xa5' in i]
    first=weather[:tag[1]]
    second=weather[tag[1]:tag[2]]
    if second[1]!=second[7]:second[1]+=' --> '+second[7]
    second[2]=second[9]+' --> '+second[3]
    second[0]=second[0][:-6]
    second=second[:3]
    third=weather[tag[2]:tag[3]]
    if third[1]!=third[7]:third[1]+=' --> '+third[7]
    third[2]=third[9]+' --> '+third[3]
    third[0]=third[0][:-6]
    third=third[:3]
    weather=['<span color="green">    Weather:</span>']+first+['|']+second+['|']+third
    for i in weather:print i,

    展开全文
  • 网上找到落落的抓取天气预报的代码,觉的简单易用,修改一下,放在后勤首页中。Webservice从 http://www.webxml.com.cn/webservices/weatherwebservice.asmx获取 1、主要代码 #! /usr/bin/env python  #_*_...

    网上找到落落的抓取天气预报的代码,觉的简单易用,修改一下,放在后勤首页中。Webservice从

    http://www.webxml.com.cn/webservices/weatherwebservice.asmx获取

    1、主要代码

    #! /usr/bin/env python 
    #_*_coding:utf-8_*_ 
    import urllib 
    page = urllib.urlopen("http://www.webxml.com.cn/webservices/weatherwebservice.asmx/getWeatherbyCityName?theCityName=青岛"); 
    body = page.readlines(); 
    page.close(); 
    for line in body: 
      print line

    不过它返回回来的是一段xml字符串

    <ArrayOfString>
    <string>山东</string>
    <string>青岛</string>
    <string>54857</string>
    <string>54857.jpg</string>
    <string>2011-4-1 8:59:53</string>
    <string>3℃/14℃</string>
    <string>4月1日 多云转阴</string>
    <string>南风4-5级转北风5-6级</string>
    <string>1.gif</string>
    <string>2.gif</string>
    <string>今日天气实况:气温:8℃;风向/风力:南风 4级;湿度:79%;空气质量:良;紫外线强度:最弱</string>

    <string>
    穿衣指数:天气凉,建议着厚外套加毛衣等春秋服装。体弱者宜着大衣、呢外套。因昼夜温差较大,注意增减衣服。
    感冒指数:昼夜温差极大,且风力较强,极易发生感冒,请特别注意增减衣服保暖防寒。
    运动指数:天气较好,请减少运动时间并降低运动强度,因紫外线强且风力较大,户外运动避风防晒。
    洗车指数:较适宜洗车,未来持续两天无雨,但考虑风力较大,擦洗一新的汽车会蒙上灰尘。
    晾晒指数:天气晴朗,午后温暖的阳光仍能满足你驱潮消霉杀菌的晾晒需求。
    旅游指数:白云飘飘,温度适宜,但风稍微有点大。这样的天气很适宜旅游,您可以尽情地享受大自然的无限风光。
    路况指数:晴天,其它条件适宜,路面比较干燥,路况较好。
    舒适度指数:白天天气晴好、但风力较强,早晚会感觉偏凉,午后舒适、宜人。
    </string>
    <string>2℃/11℃</string>
    <string>4月2日 阴转多云</string>
    <string>北风5-6级转4-5级</string>
    <string>2.gif</string>
    <string>1.gif</string>
    <string>5℃/14℃</string>
    <string>4月3日 晴转多云</string>
    <string>北风3-4级转南风3-4级</string>
    <string>0.gif</string>
    <string>1.gif</string>

    <string>
    青岛市地处山东半岛南部,位于东经119°30′至121°00′,北纬35°35′至37°09′,东、南濒临黄海,东北与烟台市毗邻,西与潍坊市相连,西南与日照市接壤。全市总面积为东、南濒临黄海,东北与烟台市毗邻,西与潍坊市相连,西南与日照市接壤。面积:总面积10654.1平方公里。人口:人口700多万。青岛气候有着鲜明的特点,那就是:四季分明,夏短冬长;夏无酷暑,冬少严寒;降水适中,热量充足;春夏多雾,冬春风大。青岛夏季较内地短,一年平均只有80天,夏季平均气温为23摄氏度,最热的8月平均气温为25.1摄氏度,由于受海洋影响,比较凉爽,是人们避暑,疗养和游泳的最好季节。青岛近代历经沧桑,有着丰富的文化旅游景观,根据景点的分布和文化内涵,可分为各具特色的四大区域,即:西部旧城区(西方近代城市风貌)、东部新区(现代化国际城市风貌)、市区腹地(胶东民俗文化风貌)、郊区(历代文物古迹风貌)。到青岛来游览,即可享受宜人的气候和优美的风光。又可在观赏中外文化碰撞交融的结晶中产生深层次的思索和启迪,因而具有很高的旅游价值。景观:趵崂山、八大关、栈桥、五四广场。
    </string>
    </ArrayOfString>

    2、返回回来的是一段xml文档,现在就是解析xml文档获得我需要的数据

    使用到的类 xml.dom.minidom ,

    API

    parse( filename_or_file, parser)

    Return a Document from the given input. filename_or_file may be either a file name, or a file-like object. parser, if given, must be a SAX2 parser object. This function will change the document handler of the parser and activate namespace support; other parser configuration (like setting an entity resolver) must have been done in advance.

    If you have XML in a string, you can use the parseString() function instead:

     

    parseString( string[, parser])

    Return a Document that represents the string. This method creates a StringIO object for the string and passes that on to parse

    这两个方法返回的都是Document对象,看看Document常用的几个方法:

    createElement_x(tagName):创建并返回一个新的Element节点

    createTextNode(data)添加一个的文本节点

    createComment(data)添加注释

    createAttribute(name)添加属性

    getElementsByTagName_r(tagName)

    这里使用parseString(string)这个方法

    #! /usr/bin/env python
    #_*_coding:utf-8_*_
    import urllib
    from xml.dom.minidom import parseString
    
    def weather():
      page = urllib.urlopen("http://www.webxml.com.cn/webservices/weatherwebservice.asmx/getWeatherbyCityName?theCityName=青岛");
      body = page.readlines();
      page.close();
    
      #body是一个list,需要转成string
      document=""
      for line in body:
        document = document + line
      #print document
    
      dom =parseString(document)
    
      strings = dom.getElementsByTagName_r("string")
      #今天的温度和天气
      today_temperature=getText(strings[5].childNodes)
      today_weather=getText(strings[6].childNodes)
    
      #明天的温度和天气
    
      tomorrow_weather=getText(strings[13].childNodes)
      tomorrow_temperature=getText(strings[12].childNodes)
    
      weather=today_weather+" " +today_temperature+" ;  " +tomorrow_weather+" "+tomorrow_temperature
    
      return weather
    
    def getText(nodelist):
        rc = ""
        for node in nodelist:
            if node.nodeType == node.TEXT_NODE:
                rc = rc + node.data
        return rc
    
    if __name__=="__main__":
      weather = weather()
      print weather
    
    

    输出结果为:

    >>> 4月1日 多云转阴 3℃/14℃   4月2日 阴转多云 2℃/11℃
    展开全文
  • 最近用java写网站有点累了,发发一些写于一年前的python代码,一直没有用在实际系统中。不知道针对现在的天气预报网站是不是有效,不过对各位应该...这是一个比较完善的天气预报抓取程序 。   #! /usr/...

    最近用java写网站有点累了,发发一些写于一年前的python代码,一直没有用在实际系统中。不知道针对现在的天气预报网站是不是有效,不过对各位应该又很大的参考价值.

    使用BeautifulSoup做HTML分析。

    抓取最近的5天数据,并保存到mysql数据库中。

    如果出现处理失败,会向指定的邮件地址,发送报警。这是一个比较完善的天气预报抓取程序

       #! /usr/bin/env python    # -*- coding: utf-8 -*-       """   todo :设置一个字段表示,是否成功更新,一旦成功则记录ID,系统运行结束,进行update。否则发送短信。保证只发送一次   """    import  os,urllib2,re,MySQLdb,datetime,time,smtplib    from  BeautifulSoup  import  BeautifulSoup    from  StringIO  import  StringIO    from  email.mime.text  import  MIMEText       USER_AGENT =  '  Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1'    BASE_URL_BEGIN=  'http://www.weather.com.cn/html/weather/'    BASE_URL_END =  '.shtml'    conn = MySQLdb.connect(host= "localhost" , user= "fun" , passwd= "fun" , db= "fun" ,use_unicode= 1 , charset= 'utf8' )       #Mail 接收方邮件    mailto_list=[ "ealpha.shi@mobimtech.com" ]    #SMTP 服务器,用户名、口令以及邮箱的后缀    mail_host= "imichat.com"    mail_user= "imichat"    mail_pass= "imichat"    mail_postfix= "imichat.com"         #失败的WID,记录用来判断,是否发送邮件    faultwid = []    #失败重试次数    dotime =  0          def  send_mail(to_list,sub,content):         '' '''       to_list:发给谁       sub:主题       content:内容       send_mail("aaa@126.com","sub","content")       '''        me=mail_user+ "<" +mail_user+ "@" +mail_postfix+ ">"        msg = MIMEText(content)        msg[ 'Subject' ] = sub        msg[ 'From' ] = me        msg[ 'To' ] =  ";" .join(to_list)         try :            s = smtplib.SMTP()            s.connect(mail_host)            s.login(mail_user,mail_pass)            s.sendmail(me, to_list, msg.as_string())            s.close()             return   True         except  Exception, e:             print  str(e)             return   False       def  getFiveDayWeather(wid,pageid,agent=USER_AGENT):         """       将需要的数据表格从整个网页取出来       """        url = BASE_URL_BEGIN + pageid + BASE_URL_END            #print '*************************'         #print url           request = urllib2.Request(url)        request.add_header( 'User-Agent' , agent)        opener = urllib2.build_opener()        allhtml = StringIO(str((opener.open(request)).read()))        soup = BeautifulSoup(allhtml, fromEncoding= "utf-8" )           html = soup.find( 'div' , id= 'dd_0' ).parent.contents            getWeatherList(wid,html)            return  html       def  getWeatherList(wid,html):         """       取得最后发布时间,已经5天数据       """        soup1 = BeautifulSoup(str(html))        time = soup1.find( 'h2' )        update_time =  ''         for  t  in  time:            update_time = t         #print '\r'         #print update_time         #print '\r'        html2 = soup1.findAll( 'div' , {  "class"  :  "fut_weatherbox"  })        dayid =  0         for  dayweather  in  html2:            dayid +=  1            getOneDayWeather(wid,dayid,update_time,dayweather)         pass       def  getOneDayWeather(wid,dayid,update_time,html):         """       分析一天的天气预报信息       """        soup = BeautifulSoup(StringIO(str(html)), fromEncoding= "UTF-8" )        day  = soup.findAll( 'h3' )        imgs = soup.findAll( 'img' )        t00  = soup.findAll( 'h4' , {  "class"  :  "temp00_dn"  })        t01  = soup.findAll( 'h4' , {  "class"  :  "temp01_dn"  })        t02  = soup.findAll( 'h4' , {  "class"  :  "temp02_dn"  })        t03  = soup.findAll( 'h4' , {  "class"  :  "temp03_dn"  })         #print '----------------------'        soup_h3 = BeautifulSoup(StringIO(str(day)), fromEncoding= "UTF-8" )        day_value = soup_h3.h3.renderContents()            #for img in imgs:  为了确定值,不使用循环        soup_img = BeautifulSoup(StringIO(str(imgs[ 0 ])), fromEncoding= "UTF-8" )        imgsrc = soup_img.first( 'img' )[ 'src' ]        d_pic_value =  imgsrc.split( '/' )[- 1 ].split( '.' )[- 2 ]           soup_img = BeautifulSoup(StringIO(str(imgs[ 1 ])), fromEncoding= "UTF-8" )        imgsrc = soup_img.first( 'img' )[ 'src' ]        n_pic_value = imgsrc.split( '/' )[- 1 ].split( '.' )[- 2 ]           soup_t00 = BeautifulSoup(StringIO(str(t00)), fromEncoding= "UTF-8" )        weather_value =  soup_t00.h4.renderContents()           soup_t01 = BeautifulSoup(StringIO(str(t01)), fromEncoding= "UTF-8" )        max_temp = soup_t01.h4.renderContents()           soup_t02 = BeautifulSoup(StringIO(str(t02)), fromEncoding= "UTF-8" )        min_temp = soup_t02.h4.renderContents()           soup_t03 = BeautifulSoup(StringIO(str(t03)), fromEncoding= "UTF-8" )        wind =  soup_t03.h4.renderContents()           insertDB(wid,dayid,update_time,day_value,d_pic_value,n_pic_value,weather_value,max_temp,min_temp,wind )       def  insertDB(wid,dayid,update_time,day_value,d_pic_value,n_pic_value,weather_value,max_temp,min_temp,wind ):         """       插入数据库,此处要修改,5天数据一次commit(),异常rollback()       """        cursor_uodate=conn.cursor()        sql= "INSERT INTO weatherdetail( wid, dayid, lastupdate, currdate, dpic, npic,weather, maxtemp, mintemp, wind) VALUES( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"        param = (wid,dayid,update_time ,day_value,d_pic_value,n_pic_value,weather_value,max_temp,min_temp,wind)         #print param        n=cursor_uodate.execute(sql,param)        conn.commit()         #print n       def  sendMonitor():         """       处理失败,发送报警邮件或短信       """         if  len(faultwid) <>  0  :                if  send_mail(mailto_list, "Error: Get Weather Error " +str(datetime.datetime.now()),str(faultwid)):                 print   "监控邮件发送成功."             else :                 print   "监控邮件发送失败."         pass       def  doworking(dotime,wid,pageid):         """       业务处理入口       """         try :            getFiveDayWeather(wid,pageid)         except  (NameError,Exception),e:             print   "has one error on %s %s , then do it again , waiting five secs."  % (wid,pageid)            time.sleep( 5 )             if  dotime <  3  :                doworking(dotime +  1 ,wid,pageid)             else :                faultwid.append(wid)             pass         if  __name__ ==  "__main__" :         """       入口函数       """             starttime = datetime.datetime.now()            print   "Start." +str(starttime)        cursor = conn.cursor()        cursor.execute( "SELECT id,weather_com_cn_pageid FROM weather" )        result = cursor.fetchall()         for  record  in  result:             # 将 dotime 恢复到 0 ,代表本次请求首次执行            doworking( 0 ,str(record[ 0 ]),record[ 1 ])             #time.sleep(2)            print   '\r'        endtime = datetime.datetime.now()         print   "End." +str(endtime)         print   "-------------------------------------------------"        sendMonitor()         print  (endtime - starttime).seconde   
    展开全文
  • python天气预报

    2021-06-03 12:15:24
    python天气预报 from urllib.request import urlopen#获取页面 from bs4 import BeautifulSoup#从网页抓取数据 html=urlopen(r"http://www.weather.com.cn/weather/101090101.shtml").read().decode('utf-8')对...

    python爬天气预报

    from urllib.request import urlopen#获取页面

    from bs4 import BeautifulSoup#从网页抓取数据

    html=urlopen(r"http://www.weather.com.cn/weather/101090101.shtml").read().decode('utf-8')对中文解码

    #print(html)

    soup=BeautifulSoup(html,features="lxml")

    all_ul=soup.find_all("ul",attrs={"class":"t clearfix"})

    all_li=all_ul[0].find_all('li')

    for i in all_li:

    h1=i.find("h1").get_text()

    p1=i.find("p",attrs={"class":"wea"}).get_text()

    p2=i.find("p",attrs={"class":"tem"}).get_text()

    print("==============")

    print(h1)

    print(p1)

    print(p2)


    --------------------------------------------------

    附:Python制作二维码简易步骤

    Python制作二维码简易步骤

    附:Python爬取整本小说

    Python爬取整本小说

    附:Python爬天气预报

    Python爬天气预报

    附:Python爬取百度图片

    Python爬取百度图片

    附:python图片转字符画

    python图片转字符画

    展开全文
  • 主要介绍了python微信聊天机器人改进版,定时或触发抓取天气预报、励志语录等,向好友推送 ,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Python 抓取中国天气天气数据

    千次阅读 2014-12-10 21:30:37
    众所周知中国天气网提供的有个公共天气预报API接口,但是不知道咋的一直停在3月4号不更新了。最近做个天 气方面的APP需要用到一些天气数据,360的接口公司不让用。只好自己写一个python脚本放数据中心。 先发三个...
  • 这个程序很早以前就写过了,而且是参考的别人的写,具体谁的发 -*- coding:utf-8 -*- ...抓取天气预报信息,并通过pyfetion发送短信通知 """ import os import re import urllib imp...
  • 天气数据进行抓取与分析 1、对天气数据进行抓取 import requests from bs4 import BeautifulSoup import pandas as pd def getAQI(url): headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64...
  • 主要介绍了Python爬取国外天气预报网站的方法,可实现抓取国外天气预报信息的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 最近想着做一个微信机器人,主要想要实现能够每天定时推送天气预报或励志语录,励志语录要每天有自动更新,定时或当有好友回复时,能够随机推送不同的内容。于是开始了分析思路。博主是采用了多线程群发,因为微信对...
  • 本文主要介绍的是使用Python的urllib从天气预报网站抓取预报内容的方法,如果你在南京,那下面的代码可以直接使用(除非抓取的网站改版)。废话少说,上代码:# -*- coding: utf-8 -*-import urllibimport re...
  • 网上好多关于Python各种爬虫以及可视化学习的文章,本人最近刚开始学习python,利用网上资源学习编写了第一个python程序,现将代码传上,供新手参考练习。 环境 WIN7 64位操作系统,pythonV3.63, PyCharm 可直接...
  • github项目地址:https://github.com/robertzhai/python/tree/master/scrapy/weather # -*- coding:utf-8 -*- import os,sys import time import json from pyv8 import PyV8 import json str = ''' {city:'济南'...
  • 通过解析Yahoo的XML格式文本获取其天气预报信息 写在前面:为了纪念小白学习python的历程,博主在此记录下每天的学习笔记与心得。本学习笔记基于廖雪峰大大的Python教程,如有侵权,请告知删除。喜欢python的盆友...
  • 本学习笔记基于廖雪峰的Python教程。欢迎与博主一起学习Pythonヽ( ̄▽ ̄)ノ 本节内容包括:XML的介绍;如何用SAX解析XML文本;XML文本生成;通过解析Yahoo的XML格式文本获取其天气预报信息。
  • 天气预报首先需要的就是天气信息,可以从中国天气网的Wap网站上获取,因为Wap网站页面简单,便于抓取内容。网址是:http://wap.weather.com.cn/wap/,默认是北京的天气预报,可以更换城市。某城市的天气预报对应的...
  • 文 |潮汐来源:Python 技术「ID: pythonall」每天一个 Python 小技巧,你学废了吗?今天文章主要讲解如何将天气预报信息爬取下来并发送给小姐姐,感兴趣的朋友不妨试...
  • # Filename: 用bs4实现抓取全国天气预报.py # Data : 2020/07/29 # Author : --king-- # ctrl+alt+L自动加空格格式化 from bs4 import BeautifulSoup import requests import csv # 获取网页源代码 def page_...
  • 以前一直使用中国天气网的天气预报组件都挺好,可是自从他们升级组件后数据加载变得非常不稳定,因为JS的阻塞常常导致网站打开速度很慢。为了解决这个问题决定现学现用python编写一个抓取程序,每天定时抓取最新的...
  • 这里的天气预报是用python从中国天气网抓取的雷达数据。有没有更精准的数据源呢,当然有啦,但这不是本文的重点,这里我就不详说了。 用到的工具:新浪SAE + 微信公众平台 + python2.7(新浪SAE目前...
  • 美国天气预报网站:http://forecast.weather.gov/MapClick.php?lat=37.77492773500046&lon=-122.41941932299972 在爬取网站之前,我们首先要找到我们想要爬取的网站地址以及想爬取这个网页上的哪些信息。以...
  • Python代码抓取获取天气预报信息源码软件。用python写天气查询软件程序很简单。这段代码可以获取当地的天气和、任意城市的天气预报,原理是根据url找到网站截取相应的数据展现。
  • python爬虫----全国天气预报的获取

    千次阅读 热门讨论 2018-09-24 21:57:11
    这次是通过全国天气预报的网站去抓取实时天气和预测未来24小时的天气,抓取的数据包括:地区的区号、地区名称、实时气温、湿度、风向、风力、预测的最高温和最低温、晚间风向、日间的风向和各自的风力大小,把这些...
  • 爬虫(Spider,也称蜘蛛)程序是一类自动从网络中抓取信息的程序。搜索引擎就靠它收录成千上万的网站。今天呢,我们就来做一个简单的爬虫吧。 (注:以下教程已假设读者安装了Python3,且选择了红框中的安装选项) ...
  •  利用BeautifulSoup抓取中国天气网各个城市7天的  时间 天气状态 最高温 最低温 的相关信息,并记录保存在本地csv表格文件中。 以杭州为例:http://www.weather.com.cn/weather/101210101.shtml 爬取的...
  • #抓取天气网站最近7天的天气情况,写入文件并在控制台显示 from bs4 import BeautifulSoup #用来代替正则表达式取源码中相应标签的内容 import random import requests #用来抓取网页的html源代码 import socket #用...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

python抓取天气预报

python 订阅