(一)
早晨 7 点,两路口。小痴在清晨的梦中被闹钟叫醒。
他关掉闹钟,翻起身,来到洗漱台,对着镜子,不经意扬起了嘴巴,微笑起来。
(二)
小痴,全名陈小痴,是一名程序员。
小痴人如其名,长相清秀,痴迷于编程。人生的座右铭「人必有痴,而后有成」。小痴非常注重自身的穿着,平常虽然穿的不时尚,但却给人很舒服的感觉。
(三)
在简单的洗漱完之后,小痴穿上了带着公司 logo 的 T 恤,把笔记本放进小米电脑包,步行来到两路口轻轨站。
二号线正值早高峰,人潮汹涌。但小痴早已习惯,不慌不忙的买了早餐,豆浆配馒头。随后坐上了两路口的轻轨,手机看着「stromzhang」的文章,向着江北方向驶去。
(四)
小痴如今已是一位技术组的领导,带领着自己的团队。他主导 android 版的 APP,从原本日活几百到如今日活几万,给公司带来非常多的利润。这样的壮举让小痴名声大噪,受到领导的赏识,在公司里得到很多人的尊重。但最近小痴看起来非常的不开心。
(五)
平时海哥和小痴关系非常好,小海最先发现这个情况。在一次周末,海哥约小痴出来喝酒。随后海哥问到:“痴哥最近有心事吗?”小痴把眼前的啤酒一口闷下,随后说到:“哎,也没什么大事,就是家里人看我年龄大了,一直叫我去相亲。你说我年轻时是多么潇洒,如今就只能去相亲,寻找我的爱情吗?”小痴说完,又喝了一大口啤酒。
(六)
海哥随忙说道:“痴哥你最近可把我吓坏了,我还以为是什么事,让你最近如此心神不定。以痴哥英俊的长相,还要去相亲?在说现在谁还找媒婆相亲啊,如今相亲网站多的去了,比如最近很火的「我主良缘」。这个网站,还可以根据你想要的条件,来筛选自己心仪的对象。比如按痴哥这个条件来,对方身高至少要 170 吧,教育程度本科,月薪 5000,最好是在北京,因为痴哥马上要去北京发展。对象对于痴哥来说不是个事。以后痴哥在北京发展,可要带带小弟我啊”
果然还是海哥最了解小痴,这一番话让小痴心情好了许多,开心的跟着海哥喝着酒。回到家中,小痴就利用 Python 默默的爬取「我主良缘」。
今天的程序就是利用 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对象」即可获取。感兴趣的同学可以自行下载查看,公众号所有的代码也都会保存到这个项目里,不妨给个 star。
在写完代码以后,我还去搜索下帝都的男生。搜索条件是:身高 180,年龄 25,月薪 1.5W。然后就得到这样的结果。
果然男生相对来说打扮比较普通,还是妹子的好看些。更多有趣的内容,可以自己运行代码,看看你的心仪的对象都会有哪些。
公众号「痴海」,每天分享 Python 干货