• <tfoot id="ukgsw"><input id="ukgsw"></input></tfoot>
    
    • 久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
      分享

      Python 打造最強表白程序(源碼)

       dinghj 2019-03-26

      此程序結(jié)合數(shù)據(jù)抓取 + 微信自動發(fā)消息 + 定時任務(wù),實現(xiàn)一個能每天自動定時給你心愛的 ta 發(fā)送:

      你們相識相戀天數(shù) + 情話 + 我愛你的圖片。具體的消息如下:

      每天發(fā)送的消息格式如下:

      1.     message = """
      2.     親愛的{}:
      3.     早上好,今天是你和 Koc 相戀的第 {} 天~
      4.     今天他想對你說的話是:
      5.     {}
      6.     最后也是最重要的!
      7.     """.format("你的好友名稱", str(inLoveDays), love_word)

      這里需要填寫的第一個字段是 ta 的稱呼,inLoveDays 為你們相識相戀的天數(shù)。

      love_word 是每天為 ta 精心準備情話內(nèi)容,當(dāng)然如果你的文筆好也可以自己寫。

      當(dāng)然最后也是最重要的!每天不盡相同的「我愛你」圖片!

       

      程序思路

      本次程序運行的環(huán)境是 windows10 + Python 3.6,此次主要用到的庫有 selenium、itchat、request。程序主要分為兩部分第一數(shù)據(jù)的抓取,一些情話信息和圖片信息。另一部就是利用 itchat 自動發(fā)送消息給你的好友。

      情話信息

      如果對你的文筆有信心,那你可以自己寫些情話。當(dāng)然大部分人的文筆跟我一樣是比較差的,所以這時候我們就可以利用網(wǎng)上的資源,比如下面的情話網(wǎng)站。

      http://www./yulu2/3588.html

      在抓取這個網(wǎng)站的情話時,如果你利用普通的爬取思路,即利用 request 進行請求,你會發(fā)現(xiàn)網(wǎng)頁獲取的數(shù)據(jù)是亂碼并且不完整。所以在這塊為了操作方便,我利用了 selenium 的 PhantomJS 無頭瀏覽器,來獲取網(wǎng)站的信息。

      通過 selenium + xpath 我們就可以很輕松的獲取到網(wǎng)頁情話,最后把獲取到的數(shù)據(jù)保存到當(dāng)前目錄下的「love_word.txt」方便之后的讀取。

      表白圖片資源

      為了配合此次七夕表白程序,我專門去找了些帶有「我愛你」的圖片資源。通過下面的貼吧貼子,我們就可以獲取到大量的這樣資源。

      http://tieba.baidu.com/p/3108805355

       

      此貼并沒有很強的反爬措施,所以我簡單的利用 request + re 來獲取到圖片資源,并保存到當(dāng)前目錄的下「img」文件里。

      在保存圖片資源之前,我會先檢查當(dāng)前目錄下是否有「img」文件夾,如果沒有則會自動創(chuàng)建。

       

      表白程序源碼

      此次表白程序主要有 5 個函數(shù)

      crawl_Love_words()

      此函數(shù)通過 selenium + xpath 來抓取情話網(wǎng)站的資源,并存入到當(dāng)前目錄下的「love_word.txt」文件。
       

      1. def crawl_Love_words():
      2.     print("正在抓取情話...")
      3.     browser = webdriver.PhantomJS()
      4.     url = "http://www./yulu2/3588.html"
      5.     browser.get(url)
      6.     html = browser.page_source
      7.     Selector = etree.HTML(html)
      8.     love_words_xpath_str = "http://div[@id='content']/p/text()"
      9.     love_words = Selector.xpath(love_words_xpath_str)
      10.     for i in love_words:
      11.         word = i.strip("\n\t\u3000\u3000").strip()
      12.         with open(love_word_path, "a") as file:
      13.             file.write(word + "\n")
      14.     print("情話抓取完成")

      crawl_love_image()

      此函數(shù)用來爬取貼吧帶有「我愛你」的圖片資源,通過 request + re 來實現(xiàn)。代碼并不復(fù)雜,在正則表達式那也簡單的寫了一個,用來匹配當(dāng)前也所有的圖片資源。

      1. def crawl_love_image():
      2.     print("正在抓取我愛你圖片...")
      3.     for i in range(1, 22):
      4.         url = "http://tieba.baidu.com/p/3108805355?pn={}".format(i)
      5.         response = requests.get(url)
      6.         html = response.text
      7.         pattern = re.compile(r'<div.*?class="d_post_content j_d_post_content.*?">.*?<img class="BDE_Image" src="(.*?)".*?>.*?</div>', re.S)
      8.         image_url = re.findall(pattern, html)
      9.         for j, data in enumerate(image_url):
      10.             pics = requests.get(data)
      11.             mkdir(pic_path)
      12.             fq = open(pic_path + '\\' + str(i) + "_" + str(j) + '.jpg', 'wb')  # 下載圖片,并保存和命名
      13.             fq.write(pics.content)
      14.             fq.close()
      15.     print("圖片抓取完成")

       

      mkdir(path)

      此函數(shù)用來在當(dāng)前目錄下創(chuàng)建一個新的文件夾,以便存儲相應(yīng)的數(shù)據(jù)。

      1. def mkdir(path):
      2.     folder = os.path.exists(path)
      3.     if not folder:  # 判斷是否存在文件夾如果不存在則創(chuàng)建為文件夾
      4.         os.makedirs(path)  # makedirs 創(chuàng)建文件時如果路徑不存在會創(chuàng)建這個路徑
      5.         print("---  new folder...  ---")
      6.         print("---  OK  ---")
      7.     else:
      8.         print("正在保存圖片中...")

       

      send_new()

      此函數(shù)通過利用 itchat 庫,實現(xiàn)給你的微信好友自動發(fā)送消息。在這個函數(shù)中我利用 datetime 來計算你們之間相識相戀的時間。并且在登錄的時候添加了一個「hotReload=True」,這樣你就可以不用每次運行程序的時候都要登錄。關(guān)于 itchat 更多的操作,大家可以去網(wǎng)上查找相應(yīng)的資料。

      1. def send_news():
      2.     # 計算相戀天數(shù)
      3.     inLoveDate = datetime.datetime(2018, 8, 15) # 相戀的時間
      4.     todayDate = datetime.datetime.today()
      5.     inLoveDays = (todayDate - inLoveDate).days
      6.     # 獲取情話
      7.     file_path = os.getcwd() + '\\' + love_word_path
      8.     with open(file_path) as file:
      9.         love_word = file.readlines()[inLoveDays].split(':')[1]
      10.     itchat.auto_login(hotReload=True) # 熱啟動,不需要多次掃碼登錄
      11.     my_friend = itchat.search_friends(name=u'你的好友名稱')
      12.     girlfriend = my_friend[0]["UserName"]
      13.     print(girlfriend)
      14.     message = """
      15.     親愛的{}:
      16.     早上好,今天是你和 Koc 相戀的第 {} 天~
      17.     今天他想對你說的話是:
      18.     {}
      19.     最后也是最重要的!
      20.     """.format("你的好友名稱", str(inLoveDays), love_word)
      21.     itchat.send(message, toUserName=girlfriend)
      22.     files = os.listdir(pic_path)
      23.     file = files[inLoveDays]
      24.     love_image_file = "D:\\img\\" + file
      25.     try:
      26.         itchat.send_image(love_image_file, toUserName=girlfriend)
      27.     except Exception as e:
      28.         print(e)

      main()

      main() 函數(shù)就是我們主邏輯函數(shù),程序運行的邏輯順序就是在這個函數(shù)里規(guī)定的。在 main() 里我首先判斷下當(dāng)前路徑下是否有「love_word.txt」文件,如果有則提示相應(yīng)的信息,沒有的話才去執(zhí) crawl_Love_words() 函數(shù),去網(wǎng)上抓取一些情話數(shù)據(jù)。

      其次再判斷下當(dāng)前目錄下是否有「img」文件夾,用來判斷我們是否有圖片資源,沒有則執(zhí)行 crawl_love_image() 來抓取貼吧上的圖片資源。

      最后我們所需的數(shù)據(jù)都已準備完善,則調(diào)用 send_news() 函數(shù),整理下要發(fā)送的數(shù)據(jù)格式,然后自動給你的 ta 發(fā)送消息。

      定時任務(wù)

      每天定時發(fā)送我主要是用 while True 簡單的實現(xiàn),通過判斷當(dāng)前的時間是否是你所需要發(fā)送的時間,來達到每天定時發(fā)送。

      1. if __name__ == '__main__':
      2.     while True:
      3.         curr_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
      4.         love_time = curr_time.split(" ")[1]
      5.         if love_time == "22:46:01":
      6.             main()
      7.             time.sleep(60)
      8.         else:
      9.             print("愛你的每一天都是如此美妙,現(xiàn)在時間:" + love_time)

      表白程序使用教程

      首先你把相應(yīng)的源碼下載下來,后臺回復(fù)「表白」即可獲取。其次把相應(yīng)的庫先事先安裝好,隨后運行程序則會顯示一個微信網(wǎng)頁登錄的二維碼,掃描登錄即可。

       

      因為我在登錄時添加了「hotReload=True」,所以程序在下次運行時就無需再重新登錄。

      總結(jié)

      文章標題寫著「最強表白程序」,雖然有點夸張了,但此次的程序還有很多可以繼續(xù)添加的地方。比如對于發(fā)送的消息字段,我們還可以繼續(xù)添加天氣信息、星座信息、娛樂新聞、最近的趣事、最近好看的電影等等。只要你能想到的內(nèi)容,都可以添加上去。

      這些信息在網(wǎng)上都可以獲取的到,我們只要通過同樣的思路,先抓取到本地,然后進行讀取。當(dāng)然如果你覺得存儲本地會有被刪的風(fēng)險,那么你也可以保存到云端,在云端上進行存儲。

      源碼:

      鏈接: https://pan.baidu.com/s/182pk50dLEy0kNYk1uM_mqw 密碼: t9py

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多

        主站蜘蛛池模板: 国产中文字幕在线一区| 午夜福利在线观看6080| 久久精品国产福利一区二区| 99热精国产这里只有精品| 国产女主播白浆在线看| 亚洲AV永久纯肉无码精品动漫| 白丝乳交内射一二三区| 中文字幕亚洲制服在线看| 国产三级精品三级| 国产超高清麻豆精品传媒麻豆精品| 粗壮挺进邻居人妻无码| 午夜无码电影888不卡| 日本高清在线观看WWW色| 精品国产一区二区三区麻豆| 成人久久免费网站| 精品999日本久久久影院| 精品乱码无人区一区二区| 激情五月开心婷婷深爱| 精品无码人妻一区二区三区品| 国产精成人品日日拍夜夜| 人人妻人人做人人爽| 西西人体大胆444WWW| 天天综合网网欲色| 国产激情无码一区二区APP| 国产高清一区二区不卡| 国产精品自产拍在线观看| 欧美孕妇乳喷奶水在线观看| 亚洲精品国产一二三区| 精品少妇人妻AV无码久久| 免费A级毛片樱桃视频| 韩国免费a级毛片久久| 国产丝袜视频一区二区三区| 精品无人乱码一区二区三区| 国产精品VA在线观看丝瓜影院| 国产成人一区二区不卡| 亚洲国产欧美一区二区好看电影| 久久久亚洲AV成人网站| 午夜三级A三级三点在线观看 | 国产精品爽爽VA在线观看无码| 免费无码黄十八禁网站| 精品免费看国产一区二区|