小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 dinghj 2019-03-26

此程序結(jié)合數(shù)據(jù)抓取 + 微信自動發(fā)消息 + 定時任務(wù),實(shí)現(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 精心準(zhǔn)備情話內(nèi)容,當(dāng)然如果你的文筆好也可以自己寫。

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

 

程序思路

本次程序運(yùn)行的環(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 進(jìn)行請求,你會發(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

 

此貼并沒有很強(qiáng)的反爬措施,所以我簡單的利用 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 來實(shí)現(xiàn)。代碼并不復(fù)雜,在正則表達(dá)式那也簡單的寫了一個,用來匹配當(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 庫,實(shí)現(xiàn)給你的微信好友自動發(fā)送消息。在這個函數(shù)中我利用 datetime 來計算你們之間相識相戀的時間。并且在登錄的時候添加了一個「hotReload=True」,這樣你就可以不用每次運(yùn)行程序的時候都要登錄。關(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ù),程序運(yùn)行的邏輯順序就是在這個函數(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ù)都已準(zhǔn)備完善,則調(diào)用 send_news() 函數(shù),整理下要發(fā)送的數(shù)據(jù)格式,然后自動給你的 ta 發(fā)送消息。

定時任務(wù)

每天定時發(fā)送我主要是用 while True 簡單的實(shí)現(xiàn),通過判斷當(dāng)前的時間是否是你所需要發(fā)送的時間,來達(dá)到每天定時發(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)的庫先事先安裝好,隨后運(yùn)行程序則會顯示一個微信網(wǎng)頁登錄的二維碼,掃描登錄即可。

 

因?yàn)槲以诘卿洉r添加了「hotReload=True」,所以程序在下次運(yùn)行時就無需再重新登錄。

總結(jié)

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

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

源碼:

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多