自動(dòng)化抓取天氣預(yù)報(bào) 熱搜 每日一句打月,并通過(guò)企業(yè)微信機(jī)器人推送至群聊之教程 附python源碼

工具需求:Python3 + 企業(yè)微信機(jī)器人
第三方庫(kù)需求:requests + BeautifulSoup
演示環(huán)境:macOS 11.2.3 + Pycharm 2021

目標(biāo): 爬取中國(guó)天氣網(wǎng)的天氣預(yù)報(bào)队腐;爬取百度熱搜;爬取金山詞霸每日一句奏篙;通過(guò)企業(yè)微信機(jī)器人推送至群聊內(nèi)柴淘。

教程&源碼

爬取中國(guó)天氣網(wǎng)的天氣預(yù)報(bào)

隨便點(diǎn)進(jìn)一個(gè)城市的詳細(xì)天氣預(yù)報(bào),這里以北京為例秘通。
按照慣例開下F12悠就。這種實(shí)時(shí)更新的界面一般是通過(guò)ajax傳入json文件實(shí)現(xiàn)的,打開network選項(xiàng)卡刷新驗(yàn)證一下充易。

1.jpg

果然梗脾,在這個(gè)文件中我們能找到我們需要的信息,我們右鍵打開這個(gè)鏈接盹靴。打開居然是亂碼炸茧?那這估計(jì)就是編碼問(wèn)題了,我們先來(lái)寫程序稿静。

url = "https://d1.weather.com.cn/sk_2d/101010100.html?_=1618886817920"
requests_url = requests.get(url)

這里的url是剛才那個(gè)文件的url梭冠,在Network選項(xiàng)卡中右鍵復(fù)制即可獲得。

可以給requests.get加一個(gè)請(qǐng)求頭改备,放一個(gè)假UA控漠,防止被反爬。

message = json.loads(requests_url.text.encode("latin1").decode("utf8").replace("var dataSK = ", ""))

獲取文件信息
這里我先用latin1 編碼悬钳,再用utf-8解碼盐捷,發(fā)現(xiàn)可以提取出正常的文本信息,這時(shí)通過(guò)str文本的replace方法把里面的代碼部分var dataSK =去除默勾,再用json庫(kù)的loads方法將其轉(zhuǎn)化成Python字典碉渡。

到這一步就很簡(jiǎn)單了,通過(guò)字典的鍵獲取對(duì)應(yīng)的值母剥。

cityname = message['cityname']
aqi = int(message['aqi'])
sd = message['sd']
wd = message['WD']
ws = message['WS']
temp = message['temp']
weather = message['weather']

最后按照想要的格式輸出就可以了滞诺,為了方便整個(gè)程序的操作,我把這一段代碼封裝成了函數(shù)环疼。

def get_weather():
    url = "https://d1.weather.com.cn/sk_2d/101010100.html?_=1618886817920"
    requests_url = requests.get(url)
    message = json.loads(requests_url.text.encode("latin1").decode("utf8").replace("var dataSK = ", ""))
    cityname = message['cityname']
    aqi = int(message['aqi'])
    sd = message['sd']
    wd = message['WD']
    ws = message['WS']
    temp = message['temp']
    weather = message['weather']
    if aqi <= 50:
        airQuality = "優(yōu)"
    elif aqi <= 100:
        airQuality = "良"
    elif aqi <= 150:
        airQuality = "輕度污染"
    elif aqi <= 200:
        airQuality = "中度污染"
    elif aqi <= 300:
        airQuality = "重度污染"
    else:
        airQuality = "嚴(yán)重污染"
    return cityname + " " + '今日天氣:' + weather + ' 溫度:' + temp + ' 攝氏度 ' + wd + ws + ' 相對(duì)濕度:' + sd + ' 空氣質(zhì)量:' \
           + str(aqi) + "(" + airQuality + ")"

爬取百度熱搜

不多說(shuō)习霹,直接打開F12,Network選項(xiàng)卡中卻沒有我們想要的炫隶,看來(lái)這次只能直接爬取網(wǎng)頁(yè)了淋叶。這里要使用BeautifulSoup庫(kù)。

requests_page = requests.get('http://top.baidu.com/buzz?b=1&c=513&fr=topbuzz_b42_c513')
soup = BeautifulSoup(requests_page.text, "lxml")

這里解析出所有的html代碼等限,再F12一下看看我們需要的內(nèi)容在哪個(gè)標(biāo)簽下爸吮。定位一下主頁(yè)里的標(biāo)題芬膝,啊,我一看形娇,原來(lái)是個(gè)a標(biāo)簽锰霜,這好辦。

soup_text = soup.find_all("a", class_='list-title')

然后我們把它輸出出來(lái)桐早。

for text in soup_text:
        print(text.string)

然后發(fā)現(xiàn)癣缅,還他喵的是亂碼,我們?cè)僭囋?code>.encode("latin1").decode("GBK")

for text in soup_text:
        print(text.string.encode("latin1").decode("GBK")) 

還真成了哄酝,我吐了友存,敢情你倆是一家的。陶衅。屡立。

這里改動(dòng)一下,我們把他們封裝進(jìn)列表里面搀军,方便整理膨俐。

def get_top_list():
    requests_page = requests.get('http://top.baidu.com/buzz?b=1&c=513&fr=topbuzz_b42_c513')
    soup = BeautifulSoup(requests_page.text, "lxml")
    soup_text = soup.find_all("a", class_='list-title')
    top_list = []
    for text in soup_text:
        top_list.append(text.string.encode("latin1").decode("GBK"))
    return top_list

爬取金山詞霸每日一句

我直接找到他的每日一句文件。
直接開始寫代碼罩句,輕車熟路焚刺。這里很簡(jiǎn)單,不解釋门烂。

def get_daily_sentence():
    url = "http://open.iciba.com/dsapi/"
    r = requests.get(url)
    r = json.loads(r.text)
    content = r["content"]
    note = r["note"]
    daily_sentence = content + "\n" + note
    return daily_sentence

整理信息

簡(jiǎn)單的調(diào)用一下我們寫的函數(shù)乳愉,將返回信息整理到一個(gè)字符串內(nèi)即可,方便我們下一步的發(fā)送屯远。具體代碼跟隨后面整體代碼展示一遍展示蔓姚。

通過(guò)企業(yè)微信機(jī)器人發(fā)送

首先將機(jī)器人添加到群聊,具體步驟不演示氓润,不會(huì)自行百度或查閱官方文檔赂乐。

然后獲取你的機(jī)器人的webhook鏈接薯鳍。(不要把這個(gè)鏈接散播出去咖气,要不然誰(shuí)都可以調(diào)用你的機(jī)器人發(fā)送信息,造成垃圾信息污染)

我們直接向這個(gè)鏈接發(fā)送Post請(qǐng)求就可以完成機(jī)器人發(fā)送信息了挖滤,十分的簡(jiǎn)單崩溪。

url = #這里填寫你的機(jī)器人的webhook鏈接
headers = {"Content-Type": "text/plain"}
data = {
        "msgtype": "text",
        "text": {
                        "content": #這里填寫要發(fā)送的內(nèi)容,這里選擇了純文本模式
        }
}
requests_url = requests.post(url, headers=headers, data=json.dumps(data))

完成斩松。

2.jpg

本篇文章所有python源碼都在下方鏈接中伶唯,歡迎下載并交流溝通

https://www.dslt.tech/article-563-1.html

版權(quán)聲明:本文由 ARtcgb 原創(chuàng),歡迎分享本文惧盹,轉(zhuǎn)載請(qǐng)保留出處

?著作權(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)離奇詭異瓶埋,居然都是意外死亡希柿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門养筒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)曾撤,“玉大人,你說(shuō)我怎么就攤上這事晕粪〖废ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵巫湘,是天一觀的道長(zhǎng)尖啡。 經(jīng)常有香客問(wèn)我,道長(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)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了页眯?” 一聲冷哼從身側(cè)響起梯捕,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(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
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惨撇。三九已至伊脓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魁衙,已是汗流浹背报腔。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(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)容