標籤:

論如何利用 Python 優雅的找對象

論如何利用 Python 優雅的找對象

(一)

早晨 7 點,兩路口。小痴在清晨的夢中被鬧鐘叫醒。

他關掉鬧鐘,翻起身,來到洗漱台,對著鏡子,不經意揚起了嘴巴,微笑起來。

(二)

小痴,全名陳小痴,是一名程序員。

小痴人如其名,長相清秀,痴迷於編程。人生的座右銘「人必有痴,而後有成」。小痴非常注重自身的穿著,平常雖然穿的不時尚,但卻給人很舒服的感覺。

(三)

在簡單的洗漱完之後,小痴穿上了帶著公司 logo 的 T 恤,把筆記本放進小米電腦包,步行來到兩路口輕軌站。

二號線正值早高峰,人潮洶湧。但小痴早已習慣,不慌不忙的買了早餐,豆漿配饅頭。隨後坐上了兩路口的輕軌,手機看著「stromzhang」的文章,向著江北方向駛去。

(四)

小痴如今已是一位技術組的領導,帶領著自己的團隊。他主導 android 版的 APP,從原本日活幾百到如今日活幾萬,給公司帶來非常多的利潤。這樣的壯舉讓小痴名聲大噪,受到領導的賞識,在公司里得到很多人的尊重。但最近小痴看起來非常的不開心。

(五)

平時海哥和小痴關係非常好,小海最先發現這個情況。在一次周末,海哥約小痴出來喝酒。隨後海哥問到:「痴哥最近有心事嗎?」小痴把眼前的啤酒一口悶下,隨後說到:「哎,也沒什麼大事,就是家裡人看我年齡大了,一直叫我去相親。你說我年輕時是多麼瀟洒,如今就只能去相親,尋找我的愛情嗎?」小痴說完,又喝了一大口啤酒。

(六)

海哥隨忙說道:「痴哥你最近可把我嚇壞了,我還以為是什麼事,讓你最近如此心神不定。以痴哥英俊的長相,還要去相親?在說現在誰還找媒婆相親啊,如今相親網站多的去了,比如最近很火的「我主良緣」。這個網站,還可以根據你想要的條件,來篩選自己心儀的對象。比如按痴哥這個條件來,對方身高至少要 170 吧,教育程度本科,月薪 5000,最好是在北京,因為痴哥馬上要去北京發展。對象對於痴哥來說不是個事。以後痴哥在北京發展,可要帶帶小弟我啊」

果然還是海哥最了解小痴,這一番話讓小痴心情好了許多,開心的跟著海哥喝著酒。回到家中,小痴就利用 Python 默默的爬取「我主良緣」。

Requests 庫爬取「我主良緣」網站

今天的程序就是利用 requests 庫進行「我主良緣」網站的爬取。使我的代碼則是利用 requests 庫進行網站的抓取,在利用 mongo 資料庫進行數據的保存。大家可以對著兩個版本的代碼進行學習。

程序抓取結果

運行程序會把網站上,對應的交友信息抓取下來,保存到 mongodb 資料庫中。並單獨把圖片保存到本地的 images2 文件夾中。

程序結構

程序邏輯

利用 requests 庫對目標站點進行數據的抓取。

在對抓取的數據進行處理,篩選出自己想要的數據信息。

最後保存相應的數據信息到資料庫中。

數據請求

解析網站def get_one(page, startage, endage, gender, startheight, endheight, salary): # 設置請求頭 headers = { Referer: http://www.lovewzly.com/jiaoyou.html, User - Agent: Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 66.0.3359.170Safari / 537.36 } # 設置請求參數 params = { # 頁數 page:page, # 起始年齡 startage: startage, # 截止年齡 endage:endage, # 性別 gender:gender, # 所在城市的編號 cityid:52, # 起始身高 startheight:startheight, # 終止身高 endheight:endheight, # 是否結婚 marry:1, # 教育水平 educatin:40, # 工資薪水 salary:salary } # 網站鏈接 base_url = http://www.lovewzly.com/api/user/pc/list/search? # 拼接請求參數 url = base_url + urlencode(params) # 調試信息 print(url) while True: try: # 利用 requests 庫請求目標地址 response = requests.get(url, headers=headers) # 判斷請求的結果是否有效 if response.status_code == 200: # 返回 json 數據 return response.json() except ConnectionError: return None

欄位提取

# 解析數據def get_person(json): # 判斷 json 是否為空 if json: # 獲取 data 數據 data = json.get(data).get(list) else: # 輸出錯誤信息 print(沒有符合你的條件) if data: # 循環遍歷 data 數據,重新構造新的字典 for person in data: yield { # 用戶 id userid:person.get(userid), # 用戶名 username: person.get(username), # 性別 gender: person.get(gender), # 出現日期 birthdayyear: person.get(birthdayyear), # 身高 height: person.get(height), # 省份 province: person.get(province), # 教育程度 education: person.get(education), # 簽名 monolog: person.get(monolog), # 圖片 avatar:person.get(avatar) }

資料庫存放

保存數據到 monogo 資料庫def save_to_monogo(result): try: # 判斷保存是否成功 if db[MONGO_TABLE].insert(result): # 保存成功輸入相應信息 print(存儲到 MONGODB 成功, result) except Exception: # 保存失敗輸出相應信息 print(存儲到 MONGODB 失敗, result)

完整代碼已上傳到 Github 上,感興趣的同學可以關注公眾號「痴海」,回復「python對象」自行下載查看,

在寫完代碼以後,我還去搜索下帝都的男生。搜索條件是:身高 180,年齡 25,月薪 1.5W。然後就得到這樣的結果。

果然男生相對來說打扮比較普通,還是妹子的好看些。更多有趣的內容,可以自己運行代碼,看看你的心儀的對象都會有哪些。

公眾號「痴海」,每天分享 Python 乾貨

weixin.qq.com/r/DUT64lX (二維碼自動識別)


推薦閱讀:

哪些人,不利遠嫁,適合本地找對象?
「回得去的家鄉,找不到的對象!」
我是怎麼娶到我的朝鮮族老婆的
為什麼找不到女朋友
單身越久越難找女朋友,教你3個追女生的技巧

TAG:Python | 找對象 |