项目背景:男女人数差过大,导致大部分适合结婚的男女没有找到心仪的另一半,可以选择通过各种相亲网站,但网站上面的信息过多而且需要会员才能获取到联系方式,因此我们项目主要是通过爬取相亲网站(在此采用我主良缘相亲网站)信息,根据所想条件进行筛选,寻找到契合灵魂的人。
步骤如下:
1.使用软件python 3.7 :软件安装教程就不在此详细讲解,详情信息可以通过python官网进行了解
2.安装相关的python库:pip install 库名
提示信息出现successful就表示成功安装,出现worning不用在意,只是提醒。
import requests import os import json import openpyxl #操作excel
3.对年龄进行筛选(采用if-elif-else)
def set_age():
age = int(input('请输入期望对方的年龄(如:24):'))
if 20<= age <=90:
#年龄段范围选择
if 21 <= age <= 30:
startage = 21#起始年龄21
endage = 30#截止年龄30
elif 31<= age <= 40:
startage = 31
endage = 40
elif 41<= age <= 50:
startage = 41
endage = 50
elif 51<= age <= 60:
startage = 51
endage = 60
elif 61<= age <= 70:
startage = 61
endage = 70
elif 71<= age <= 80:
startage = 71
endage = 80
elif 81<= age <= 90:
startage = 81
endage = 90
else:
startage = 0
endage = 0
else:
print("不存在")
return startage,endage
4.对性别进行筛选(为防止意料之外的情况出现,在外面加入了一个大的范围条件进行控制)
def set_sex():
sex = input("请输入期望对方性别(如:女):")
if sex =='男' or sex== '女':
if sex == '男':
gender =1
else:
gender=2
else:
print("请核对性别是否正确")
return gender
5.为了能够筛选出更加符合条件的人,限制条件为4个,另外两个也采用if-elif-else判断筛选
# 身高
def set_height():
height =input("请输入期望对方的身高(如:162):")
if 151<= int(height) <=190:
if 151 <= int(height) <= 160:
startheight = 151
endheight = 160
elif 161 <= int(height) <= 170:
startheight = 161
endheight = 170
elif 171 <= int(height) <= 180:
startheight = 171
endheight = 180
elif 181 <= int(height) <= 190:
startheight = 181
endheight = 190
else:
startheight = 0
endheight = 0
else:
print("不存在")
return startheight,endheight
#工资
def set_money():
money = int(input("请输入期望的对方月薪(如5000):"))
if 1000 <= money <5000:
salary = 2
elif 5000 <= money < 10000:
salary = 3
elif 10000 <= money < 20000:
salary = 4
elif 20000 <= money :
salary = 5
else:
salary = 0
return salary
6.在对条件进行筛选后,就可以着手准备开始解析网页,将解析网页中的数据用txt保存。
def get_data(page,startage,endage,gender,startheight,endheight,salary):
#解析网页
#字符串的格式化
#伪装浏览器的信息
##a={'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Mobile Safari/537.36 Edg/96.0.1054.41'}
url = 'https://m.7799520.com/api/recommend/wap/search/list/search?startage={}&endage={}&gender={}&startheight={}&endheight={}&marry=1&salary={}&page={}'.format(startage,endage,gender,startheight,endheight,salary,page)
res=requests.get(url)
#状态码 200 请求成功
if res.status_code ==200:
return res.json()
return res.text
7.关于信息保存,在此进行基本数据以及照片保存,基础数据可以通过代码,在同一路径下自动生成一个excel表格,照片保存需要自己在.py文件的路径下手动添加image文件夹进行图片保存。



