栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

爬虫爬取相亲网站信息

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

爬虫爬取相亲网站信息

项目背景:男女人数差过大,导致大部分适合结婚的男女没有找到心仪的另一半,可以选择通过各种相亲网站,但网站上面的信息过多而且需要会员才能获取到联系方式,因此我们项目主要是通过爬取相亲网站(在此采用我主良缘相亲网站)信息,根据所想条件进行筛选,寻找到契合灵魂的人。

步骤如下:

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文件夹进行图片保存。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675369.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号