导航菜单

首页 >  文章 >  拿來就能用!Python 每天定時發送一句情話|原力計劃

拿來就能用!Python 每天定時發送一句情話|原力計劃

图片说明:拿來就能用!Python 每天定時發送一句情話|原力計劃,。

作者 | Baldwin_KeepMind出品 | CSDN博客我的日記 4月23日 晴你三天沒回我的消息,在我孜孜不倦地騷擾下你終於舍得回我瞭,你說‘nmsl’我想這一定是有什麼含義吧!噢!我恍然大悟,原來是尼美舒利顆粒。她知道我關節炎,讓我吃尼美舒利顆粒,她還是關心我的但是又不想顯現的那麼熱情的。天啊!她好高冷,我好像更喜歡她瞭呢!你看,雖然女神經常不理我,但是還是會偷偷地關心我,雖然她不直說,但是我都懂。唯一的問題就是,我最近很忙,忙到都沒有時間去給女神發“早安”瞭。不可以!“早安”絕對不能斷,這是我對女神誠摯的愛,女神雖然不會回復我,但是她肯定都記在心裡,不回復我肯定是在考驗我!作為一名無所不能的程序猿,我立刻就想到為什麼不用Python爬取情話,然後每天定時發送給她呢?爬取情話選取情話資源首先我們需要去網上找到合適的情話資源,如果懶得自己找,可以用這個:http://www.1juzi.com/new/150542.html分析網頁資源1. 定位情話資源鼠標放在我們要爬取的情話上快速按下右鍵+檢查(元素)。先在就可以看到我們的情話在頁面中是什麼位置瞭。2. 定位標簽在開發者工具中,我們輕松的舊定位到瞭我們的情話的標簽,就是上圖紅框裡的內容。3. 分析請求方式在剛才的界面(不要退出開發者模式)下刷新:在Network欄目下找到我們請求的那個資源,在他的Headers中找到這個資源請求的方式,這裡是GET。使用urllib庫獲取資源1、安裝urllib庫這一步是怕你服務器裡沒有urllib2庫,等會兒會造成麻煩才添加上的,如果你沒有添加該庫,請百度添加方法。2、請求資源網站代碼:import urllib.requesturl = "http://www.1juzi.com/new/150542.html"html = urllib.request.urlopen(url).read()print(html)結果:......ìé°1·××2°¤ì°ú¤¤°í3קèà°é¤°4°¤±±×5óóá±óó°6ù±°áùé±7÷8ì±9éè±òá×......小問號,你是否有很多朋友?我們爬下來的都是亂碼,發給女神一堆亂碼,女神可能還會以為是我們給她發的暗語,說不定還要花時間去尋找解密方法,想想都累,不能這個樣子!其實出現亂碼的原因主要網頁的編碼方式和我們爬取程序的編碼方式不一樣造成的,隻要找到網頁的編碼方式就好。3、設置解碼類型有3種方式:1.從網頁Content-Type中獲取編碼方式2.第三方庫智能識別編碼,常用chardet等3.猜測編碼我們這裡其實在請求頭的Content-Type裡有編碼類型,但是為瞭保險起見,也是為瞭能應用到更多的資源網站,這裡演示以下chardet的用法,猜測編碼的使用請自行百度。chardet獲取編碼類型代碼:import urllib.requestimport chardeturl = "http://www.1juzi.com/new/150542.html"html = urllib.request.urlopen(url).read()print("html頭中的charset:", chardet.detect(html))結果:/usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.pyhtml頭中的charset:{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}Process finished with exit code 0Get!!!編碼方式為GB2312!設置解碼代碼:import urllib.requestimport chardeturl = "http://www.1juzi.com/new/150542.html"html = urllib.request.urlopen(url).read()charset = chardet.detect(html).get("encoding")htmlText = html.decode(charset,errors = 'ignore')print(htmlText)結果:......每天一句小情話1、將你放進我心裡最重要的位置,用心來刻你的名字。2、愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。3、拽你入懷,予你一世相伴,擁你入懷,護你一世平安。4、何止是野心,我預謀瞭一輩子的念想,從遇見你開始,不見黃土不死心。5、我後來想瞭想,我不耽誤你,還會有別人耽誤你,那我不甘心,還是我來耽誤你吧。6、見到你的那一刻我就不知所措,有的隻是的心跳,是你改變瞭我,以前我從不會這樣的。假如有一個人能讓我心甘情願地改變那就是你。7、陪我到可可西裡去看海不要未來隻要你來。8、每一天都為你心跳,每一刻都被你感動,每一秒都為你擔心。有你的感覺真好。......哦吼!搞定!4、封裝代碼剛才我們已經實現瞭資源的獲取,但是這樣的代碼用起來太不方便瞭,我們把它封裝在方法裡:......import urllib.requestimport chardetdefgetHtml(url):""" 獲取網頁html文本資源 :param url: 網頁鏈接 :return: 網頁文本資源 """ html = urllib.request.urlopen(url).read() charset = chardet.detect(html).get("encoding") htmlText = html.decode(charset, errors='ignore')return htmlText解析網頁資源解析網頁的話,需要第三方插件Beautiful Soup來提取 xml 和 HTML 中的數據。獲取content節點內容我們想要的資源都在一個class為”content“的div節點下,我們現在先獲取這個節點的所有內容。部分代碼:soup = BeautifulSoup(htmlText,"html.parser")"獲取content節點的內容"div_node = soup.find('div', class_='content')print(div_node.get_text)結果:/usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py1、將你放進我心裡最重要的位置,用心來刻你的名字。2、愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。3、拽你入懷,予你一世相伴,擁你入懷,護你一世平安。4、何止是野心,我預謀瞭一輩子的念想,從遇見你開始,不見黃土不死心。5、我後來想瞭想,我不耽誤你,還會有別人耽誤你,那我不甘心,還是我來耽誤你吧。......本文地址:每天一句小情話http://www.1juzi.com/new/150542.html上一頁12下一頁Process finished with exit code 02.4.3. 獲取p節點內容上一步我們已經獲取到瞭我們的主要內容,然後總結可以看出我們想要的文本內容在P節點中,那麼現在就來獲取它。部分代碼:soup = BeautifulSoup(htmlText,"html.parser")"獲取div節點的內容"div_node = soup.find('div', class_='content')"獲取P節點內容"p_node = div_node.find_all('p')for content in p_node:print(content.get_text())結果:/usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py1、將你放進我心裡最重要的位置,用心來刻你的名字。2、愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。3、拽你入懷,予你一世相伴,擁你入懷,護你一世平安。4、何止是野心,我預謀瞭一輩子的念想,從遇見你開始,不見黃土不死心。5、我後來想瞭想,我不耽誤你,還會有別人耽誤你,那我不甘心,還是我來耽誤你吧。......69、有時,愛也是種傷害,殘忍的人句子大全http://Www.1juzI.coM/,選擇傷害別人,善良的人,選擇傷害自己。......Process finished withexit code 04、處理數據註意一下第69劇,這裡面有網站的鏈接,把這個一起發給女神不就露餡瞭麼,現在得想辦法給她刪掉。同時情話前面的編號也得刪掉。刪除特定標簽我們會查看一下數據就會發現,所有的鏈接都是在U標簽裡的,那我們可以直接在獲取到div標簽內容後就把u標簽刪掉"刪除特定標簽u"[s.extract() for s in div_node('u')]刪除序號我們發現,序號與情話之間是用頓號分割的,那麼我們可以將每個P標簽下的內容用split分割並且取出第二個元素就好瞭。部分代碼:"獲取P節點內容"p_node = div_node.find_all('p')for content in p_node:"以’、‘分割,並且取出第2個元素"text = content.get_text().split("、",1)[1] print(text)結果:/usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py將你放進我心裡最重要的位置,用心來刻你的名字。愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。拽你入懷,予你一世相伴,擁你入懷,護你一世平安。何止是野心,我預謀瞭一輩子的念想,從遇見你開始,不見黃土不死心。我後來想瞭想,我不耽誤你,還會有別人耽誤你,那我不甘心,還是我來耽誤你吧。......Process finished withexit code 0nice啊,到這一步你已經把我們需要的情話都提取出來瞭!!!封裝數據備用這樣一句一句的也不好處理啊!不如把它放到list裡,等下定時任務的時候可以用的時候取出來就好。部分代碼:sentenceList = list()......"獲取P節點內容"p_node = div_node.find_all('p')for content in p_node:"以’、‘分割,並且取出第2個元素"text = content.get_text().split("、", 1)[1]"追加到list尾部" sentenceList.append(text)print(sentenceList):/usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py['將你放進我心裡最重要的位置,用心來刻你的名字。', '愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。', '拽你入懷,予你一世相伴,擁你入懷,護你一世平安。', '何止是野心,我預謀瞭一輩子的念想,從遇見你開始,不見黃土不死心。', ......]Process finished withexit code 05、封裝(爬蟲代碼最終)爬蟲是做好瞭,但是總覺得乖乖的,我等下還得在其他地方用,不如這裡以面向對象的思想把爬蟲封裝一下。import urllib.requestfrom bs4 import BeautifulSoupimport chardetdef__getHtml(url):""" 私有方法:獲取網頁html文本資源 :param url: 網頁鏈接 :return: 網頁文本資源 """ html = urllib.request.urlopen(url).read() charset = chardet.detect(html).get("encoding") htmlText = html.decode(charset, errors='ignore')return htmlTextdef__sloveHtml(htmlText):""" 私有方法:解析HtmlText :param htmlText: 傳入的資源 """ sentenceList = list() soup = BeautifulSoup(htmlText, "html.parser")"獲取content節點的內容" div_node = soup.find('div', class_='content')"刪除特定標簽u" [s.extract() for s in div_node('u')]"獲取P節點內容" p_node = div_node.find_all('p')for content in p_node:"以’、‘分割,並且取出第2個元素" text = content.get_text().split("、", 1)[1]"追加到list尾部" sentenceList.append(text)return sentenceListdefgetSentenceList(url):""" Spider提供的公用方法,提供情話list :param url: 獲取情話的地址 :return: 情話list """return __sloveHtml(__getHtml(url))爬蟲總結這一部分主要用到的類庫有:BeautifulSoup,urllib,chardet。主要思想:封裝手機短信發送發送本來想用微信或者QQ發送來著,但是時隔兩年,qqbot、itchat、wxpy等第三方庫都失效瞭,沒辦法就來用手機短信發送好瞭。1. TwilioTwilio是一個做成開放插件的電話跟蹤服務(call-tracking service)Twilio公司致力於幫助開發者在其應用裡融入電話、短信等功能,該公司周二又推出瞭一項稱為Twilio Client的新服務,可幫助開發者整合靈活而低成本的網絡電話(VoIP)功能。VoIP即Skype和谷歌電話等服務使用的技術,要提供VoIP服務通常需要準備相應的基礎設備,而Twilio Client免除瞭開發者的這一麻煩,可讓他們便捷地在應用裡加入網絡電話元素。安裝安裝過程比較簡單,直接pip就好:sudo pip3 install twilio等待安裝完成SuccessfullybuilttwilioInstallingcollectedpackages: PyJWT, twilioSuccessfullyinstalledPyJWT-1.7.1twilio-6.38.1註冊並獲取三個重要參數參考文章:https://zhuanlan.zhihu.com/p/67716042簡單代碼實現發送短信實驗代碼:from twilio.rest import Client # 導包account_sid = '你的account_sid'auth_token = '你的auth_token'client = Client(account_sid, auth_token)message = client.messages.create( from_='+×××××××××', body='親愛的H,以後我每天都會給你發送一條信息哦!!!', to='你要發送到的手機號(以+86開頭)')print(message.sid)控制臺輸出:/usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/qqsend/Send.pySMfe64f40f2ac24b8ca82121d57147312cProcess finished withexit code 0手機接收短信:OK!到這裡我們已經簡單實現瞭發送短信的功能,現在要去把這個功能封裝一下。實現發送短信的功能封裝代碼:from twilio.rest import Client # 導包defsendSMSMsg(content, tel):""" 向某個手機號發送短信內容 :param content: 短信內容 :param tel: 手機號 """ account_sid = '你的account_sid' auth_token = '你的auth_token' client = Client(account_sid, auth_token) client.messages.create( from_='+18634171608', body=content, to=tel ) print('Send :', content, 'to tel:', tel, 'syccessfully!!!')if __name__ == '__main__': sendSMSMsg("Hello?" ,"+×××××××××")測試結果:/usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/qqsend/Send.pySend : Hello? to tel: +8618436354553 syccessfully!!!Process finished withexit code 0手機接收短信:發送短信總結註冊twilio獲取三個參數:account_sid,auth_token,TRIAL NUMBER引入twilio設置你要發送到的手機號和內容操作還算是比較簡單的,這部分主要用到twilio庫。定時發送短信這一步算是我們的主程序瞭,在這一部分裡,我們要使用之前的代碼先獲取情話list,再設置定時任務,每天固定的時間點把短信發到女神手機上。Python定時任務Python 中的定時任務框架還挺多的,我們現在的需求是每天早上8點鐘執行一個任務,在不到這個時間的時候不發送信息,為瞭簡便理解,我打算直接循環掃描系統當前時間,如果到瞭我們需要的那個時間點,就發送,不到的時候就一直掃描代碼實現import timewhile True:# 刷新 time_now = time.strftime("%H:%M:%S", time.localtime())# 此處設置每天定時的時間if time_now == "15:29:00":# 需要執行的動作print('定時任務執行一次') time.sleep(2) # 因為以秒定時,所以暫停2秒,使之不會在1秒內執行多次結果:/usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/DoWork.py定時任務執行一次Traceback (most recent calllast):File"/home/baldwin/PycharmProjects/IAmADog/DoWork.py", line 7, in time_now = time.strftime("%H:%M:%S", time.localtime())KeyboardInterruptProcess finished withexit code 1我是15:28:00的時候運行程序的,在設置時刻確實是執行瞭程序。下面的異常是因為我手動退出瞭程序,這裡不用管他。具體實現發送情話我們這裡整理一下具體需求:1.定時間點發送(上面已經實現瞭)2.每次發送的時候從list中取出一個句子,下一次取出下一條,不能重復3.list中的句子發送完畢之後要發短信通知我取句子思路:設置一個全局變量index,代表著下一條要發送的句子的下標,每次發送短信後,下標要增加1發送完畢通知管理員思路:每次進入任務但是發送短信之前都要比較index的值與list的長度(現在想起來,設計程序的時候用棧來儲存數據會更好),如果index已經越界,直接給管理員發短信通知。實現from spider import Spiderfrom send import Sendimport timeTIME_TO_DO = '08:30:00'# 發送時間點MSG_SUFFIX = '\n來自你的小可愛——Baldwin'# 短信後綴SOURCE_URL = 'http://www.1juzi.com/new/150542.html'# 情話資源地址SEND_TO_TEL = '+8618436354553'# 女神的手機號SEND_TO_ME = '舔狗,給女神發的短信已經用光瞭,快來更新!!!'MY_TEL = '+8618436354553'# 舔狗手機號index = 0# 下一條短信的下標sentenceList = Spider.getSentenceList(SOURCE_URL) # 情話列表while True:# 刷新 time_now = time.strftime("%H:%M:%S", time.localtime())# 此處設置每天定時的時間if time_now == TIME_TO_DO:# 需要執行的動作# 判斷當前list有沒有用光ifindex >= len(sentenceList):# 用光瞭就短信通知我 Send.sendSMSMsg(SEND_TO_ME, MY_TEL)# 跳出break# 給女神發短信 content = sentenceList[index] + MSG_SUFFIX Send.sendSMSMsg(content, SEND_TO_TEL)# 下標加一index += 1# 因為以秒定時,所以暫停2秒,使之不會在1秒內執行多次 time.sleep(2)debug模式下的各項測試:短信發送測試在idea debug模式下可以對time_now參數進行設置,把它設置成我們在前面要發送短信的那個時間點,成功進行瞭短信發送:管理員通知測試同樣的在debug模式下,設置index的值為len(sentenceList),程序進入通知管理員模塊中,這裡不再演示。封裝from spider import Spiderfrom send import Sendimport timeTIME_TO_DO = '08:30:00'# 發送時間點MSG_SUFFIX = '\n來自你的小可愛——Baldwin'# 短信後綴SOURCE_URL = 'http://www.1juzi.com/new/150542.html'# 情話資源地址SEND_TO_TEL = '+8618436354553'# 女神的手機號SEND_TO_ME = '舔狗,給女神發的短信已經用光瞭,快來更新!!!'MY_TEL = '+8618436354553'# 舔狗手機號def doSend():index = 0# 下一條短信的下標 sentenceList = Spider.getSentenceList(SOURCE_URL) # 情話列表while True:# 刷新 time_now = time.strftime("%H:%M:%S", time.localtime())# 此處設置每天定時的時間if time_now == TIME_TO_DO:# 需要執行的動作# 判斷當前list有沒有用光ifindex >= len(sentenceList):# 用光瞭就短信通知我 Send.sendSMSMsg(SEND_TO_ME, MY_TEL)# 跳出break# 給女神發短信 content = sentenceList[index] + MSG_SUFFIX Send.sendSMSMsg(content, SEND_TO_TEL)# 下標加一index += 1# 因為以秒定時,所以暫停2秒,使之不會在1秒內執行多次 time.sleep(2)# 主程序入口if __name__ == '__main__': doSend()小總結這部分主要用到的模塊:time,然後記得要把前兩個我們自己做的模塊導入進來。總結這個程序相對來說還算是比較容易的,隻要跟著文章一步步來基本上不互出問題。最後隻要運行我們最後一個模塊中主程序入口就好瞭,你也可以按照自己需求修改配置達到不同的效果。我現在就去告訴女神去。嘿嘿!女神秒回的,開心!項目地址:https://gitee.com/dikeywork/IAmADog版權聲明:本文為CSDN博主「Baldwin_KeepMind」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/shouchenchuan5253/article/details/105753596今日福利遇見大咖由 CSDN 全新專為技術人打造的高端對話欄目《大咖來瞭》來啦!CSDN 創始人&董事長、極客幫創投創始合夥人蔣濤攜手京東集團技術副總裁、IEEE Fellow、京東人工智能研究院常務副院長、深度學習及語音和語言實驗室負責人何曉冬,來也科技 CTO 胡一川,共話中國 AI 應用元年來瞭,開發者及企業的路徑及發展方向!

 >  本文声明:

本文内容不代表亚洲日韩成人电影_国内自拍视频无码高清在线_av最新入口--蜜桃圈APP视频立场,本站仅作整理、存档及学习之用,文章版权归属于原作者所有。

部分原创内容欢迎收藏、学习、交流、转载,但请保留文章出处及链接。

文章名称:拿來就能用!Python 每天定時發送一句情話|原力計劃

文章地址:http://www.thesitemaps.com/article/30.html
有关热门【拿來就能用!Python 每天定時發送一句情話|原力計劃】的标签