Python爬蟲-爬取天氣信息

爬取天氣網(wǎng)站獲取天氣信息薯鳍,并生成語音播報(bào)

#!/usr/bin/env python3
# -*- coding : utf-8 -*-

'''從數(shù)據(jù)庫中獲取城市代碼,城市code可從new_city_code.py中獲取
即我另一篇文章城市code中
2017-8-9增加生成語音播報(bào)文件 參考yuyin.baidu.com
'''

from bs4 import BeautifulSoup
import requests
import pymysql
from aip import AipSpeech
import os

app_id = 'yours'
api_key = 'yours'
secret_key = 'yours'

db = pymysql.connect(host='localhost', user='dev', passwd='000000', db='test', use_unicode=True, charset='utf8')
cursor = db.cursor()

city_rul = 'https://my.oschina.net/joanfen/blog/140364'

header = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.8',
        'Connection': 'keep-alive',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 '
                      '(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
    }


def get_city_code(city_name):
    sql = 'select city_code from weather_city_code where city_name= "%s"' % city_name
    try:
        cursor.execute(sql)
        result = cursor.fetchone()
        return result[0]
    except:
        print("抱歉实辑,沒有找到該城市~")


def get_url(city_code='101210101'):
    url = 'http://www.weather.com.cn/weather/%s.shtml' % city_code
    return url


def get_data(url='http://www.weather.com.cn/weather/101210101.shtml', name='杭州'):
    html = requests.get(url)
    html.encoding = 'utf-8'
    bs = BeautifulSoup(html.text, 'lxml')
    data = bs.find("div", {'id': '7d'})
    ul = data.find('ul')
    li = ul.find_all('li')
    i = 0
    for day in li:
        weather = []
        date = day.find('h1').string
        wea = day.find_all('p')
        title = wea[0].string
        if wea[1].find('span') is None:
            temperature_high = None
        else:
            temperature_high = wea[1].find('span').string
        temperature_lower = wea[1].find("i").string

        win = wea[2].find('span')['title']
        win_lv = wea[2].find('i').string

        weather.append(date)
        weather.append(title)
        weather.append(temperature_high)
        weather.append(temperature_lower)
        weather.append(win)
        weather.append(win_lv)
        print(weather)
        if i == 0:
            text = '你好,%s今天白天%s,最高溫度%s,最低溫度%s,%s,%s' % (name, title, temperature_high, temperature_lower, win, win_lv)
        i += 1
    return text


def run():
    city_name = input('請(qǐng)輸入你所在的城市名(ps:輸入exit或quit退出程序):')
    if city_name == 'exit' or city_name == 'quit':
        db.close()
        exit()
    else:
        city_code = get_city_code(city_name)
        if city_code is None:
             pass
        else:
            weather_url = get_url(city_code)
            print('%s最近七日天氣情況如下:' % city_name)
            text = get_data(weather_url, city_name)
            aipSpeech = AipSpeech(app_id, api_key, secret_key)
            result = aipSpeech.synthesis(text, 'zh', 1, {
                'vol': 5,
            })
            if not isinstance(result, dict):
                with open('G:/python/MP3/weather_%s.mp3' % city_name, 'wb') as f:
                    f.write(result)
                os.system('G:/python/MP3/weather_%s.mp3' % city_name)
    return city_name


if __name__ == '__main__':
   while True:
       city = run()

這是打印


image.png

這是語音播報(bào)~


出來的七天天氣信息
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末方灾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碌更,更是在濱河造成了極大的恐慌裕偿,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痛单,死亡現(xiàn)場(chǎng)離奇詭異嘿棘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)旭绒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門鸟妙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焦人,“玉大人,你說我怎么就攤上這事圆仔。” “怎么了蔫劣?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵坪郭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我脉幢,道長(zhǎng)歪沃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任嫌松,我火速辦了婚禮沪曙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萎羔。我一直安慰自己液走,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布贾陷。 她就那樣靜靜地躺著缘眶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪髓废。 梳的紋絲不亂的頭發(fā)上巷懈,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音慌洪,去河邊找鬼顶燕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛冈爹,可吹牛的內(nèi)容都是我干的涌攻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼频伤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼癣漆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起剂买,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤惠爽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后瞬哼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婚肆,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年坐慰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了较性。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片用僧。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赞咙,靈堂內(nèi)的尸體忽然破棺而出责循,到底是詐尸還是另有隱情,我是刑警寧澤攀操,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布院仿,位于F島的核電站,受9級(jí)特大地震影響速和,放射性物質(zhì)發(fā)生泄漏歹垫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一颠放、第九天 我趴在偏房一處隱蔽的房頂上張望排惨。 院中可真熱鬧,春花似錦碰凶、人聲如沸暮芭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谴麦。三九已至,卻和暖如春伸头,著一層夾襖步出監(jiān)牢的瞬間匾效,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工恤磷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留面哼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓扫步,卻偏偏與公主長(zhǎng)得像魔策,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子河胎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,080評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫闯袒、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,094評(píng)論 4 62
  • 那些魔頭游岳,東伯雪鷹輕易便斬殺政敢,當(dāng)然不在意。 可有人在意胚迫! “這白衣男子是誰喷户,竟然敢破壞我旃八島的血祭,還殺我旃八島...
    im喵小姐閱讀 266評(píng)論 0 0
  • 砂板乒乓球是近幾年才興起的访锻,源于乒乓球的一項(xiàng)衍生項(xiàng)目褪尝,和一般的乒乓球略有區(qū)別闹获。因其使用的球拍覆蓋物為薄薄砂紙而得名...
    人來不瘋閱讀 204評(píng)論 0 0
  • 昨天騎車沒過癮,兩個(gè)人今天租個(gè)Smart自駕從大理古城到雙廊河哑。故意放棄了導(dǎo)航給的最佳行車方案避诽,一路追隨蒼山洱海而來...
    私奔大叔閱讀 211評(píng)論 0 0