好兄弟单身?这不得用python来帮他脱离苦海

news2024/12/24 3:59:17

明天什么节日 ?明天谁过节 ?

是你吗,还是你的朋友 ?如果是你的话,那咱就帮帮朋友,到年龄的咱就直接相亲呗

在这里插入图片描述

赠人玫瑰 手留余香

好人做到底,来让朋友体验体验恋爱的感觉~

在这里插入图片描述

今天就带你们来爬爬相亲网站的数据信息

如果明天你不过节,那你也可以自己筛选筛选,这种好事,自己怎么能错过!

在这里插入图片描述

前期准备

环境开发

  • Python 3.8
  • Pycharm

模块使用

  • requests —> 数据请求模块 需要安装 pip install requests

  • parsel

  • csv

基本流程思路

一. 数据来源分析:

  1. 分析我们想要数据内容在哪里?
    请求那个网站, 可以得到相应的数据
  2. 抓包分析, 我们想要数据内容 在哪里
    通过开发者工具抓包分析… 会用 1 不会用 2

F12 或者 鼠标右键点击检查 选择 network <网络>
通过关键字搜索 可以找寻相关数据包 —> 查看 headers
二. 代码实现步骤:

  1. 发送请求, 模拟浏览器对于url地址发送请求
  2. 获取数据, 获取服务器返回响应数据 ----> 对应 开发者工具里面 response
  3. 解析数据, 提取我们想要数据内容 基本信息
  4. 保存数据, 保存表格里面 / 图片可以保存到文件夹里面

采集所有对象数据信息 —> 做一些简单可视化图表 —> 可以实现颜值检测 分析那个对象最好看

为什么实现颜值检测,为什么要分析

因为先看脸哈哈,有眼缘才有后续!!

实现代码

完整源码/疑问解答👉点击文末名片

# 导入数据请求模块  ---> 第三方模块 需要cmd里面 pip install requests
import requests
# 导入数据解析模块  ---> 第三方模块 需要cmd里面 pip install parsel
import parsel
# 导入csv模块 ---> 内置模块 不需要安装
import csv

# 创建文件
f = open('对象_1.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '幸运号',
    '性别',
    '年龄',
    '星座',
    '年薪',
    '学历',
    '身高',
    '爱情宣言',
    '照片',
    '详情页',
])
# 写入表头
csv_writer.writeheader()

# 网址 列表页面url
link = 'https://www.**平台不让发 需要的+wx:xiaoyuanllsll'
# 模拟浏览器headers
headers = {
    'Cookie': '_',
    'Host': 'www.19lou.com',
    'Referer': 'https://www.19lou.com/r/1/19lnsxq-4.html',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',
}
# 发送请求
response_1 = requests.get(url=link, headers=headers)
# 获取数据 print(response_1.text)
# 解析数据
selector_1 = parsel.Selector(response_1.text)
# css提取内容
title_list = selector_1.css('.item-hd h3::text').getall()  # 获取标题
# 获取链接
href = selector_1.css('.item-bd .cont a::attr(href)').getall()
# for循环
for title, index in zip(title_list, href):
    # 把http替换成https
    url = index.replace('http:', 'https:')
    """
    1. 发送请求, 模拟浏览器对于url地址发送请求
        - python代码 如何模拟浏览器发送请求
            请求头 是字典数据类型, 我们构建完整键值对形式
        - 如何替换内容
            ctrl + R 会弹出框框 输入正则命令
            (.*?): (.*)
            '$1': '$2',
        - <Response [200]> 表示请求成功
            但是不代表你得到数据...
        - response = requests.get(url=url, headers=headers)
            response 自定义变量 自己定义变量
            requests.get() 调用requests模块里面get方法
            url=url 左边url是get函数里面形式参数 右边url是我们传递进去的参数
    
    """
    # 确定请求url地址
    # url = 'https://www.**平台不让发 需要的+wx:xiaoyuanllsll'
    # 模拟浏览器发送请求 headers请求头
    headers = {
        'Cookie': '',
        'Host': 'www.19lou.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',
    }
    # 发送请求 --> <Response [200]> 表示请求成功
    # requests模块里面get请求方法对于url地址发送请求, 并且携带上headers请求头伪装, 最后用response自定变量接受返回数据
    response = requests.get(url=url, headers=headers)
    # 2. 获取数据, 获取服务器返回响应数据 ----> 对应 开发者工具里面 response print(response.text)
    """
    3. 解析数据, 提取我们想要数据内容 基本信息
    bs4 lxml parsel.... 解析模块
    - 解析方法: 都要学习掌握, 没有最好的 ---> 只有最适合的
        re: 直接对于字符串数据进行提取
    
        css: 根据标签属性提取数据内容
        xpath: 根据标签节点提取数据内容
    今日选择css选择器:
        根据标签属性提取数据内容
    
    都需要进行类型转换: 转成可解析对象
        因为我们得到 response.text ---> 字符串数据类型
 """
    # 转换数据类型 <Selector xpath=None data='<html>\n<head>\n    <meta charset="gb23...'>
    selector = parsel.Selector(response.text)
    # 使用css提取数据  不会 2  会的 1   ---> 会复制么  ctrl + c ctrl + v
    # replace() 字符串替换
    love_num = selector.css('.love-blind-female .love-blind-info p::text').get()
    if love_num:
        love_num = love_num.replace('爱情幸运号:', '')
        # split() 字符串分割
        info_list = selector.css('.love-blind-female .love-blind-info .mt10::text').get().split(',')
        # 列表索引位置取值
        sex = info_list[0]  # 性别
        age = info_list[1]  # 性别
        constellation = info_list[2]  # 星座
        money = info_list[3]  # 年薪
        edu = info_list[4]  # 学历
        height = info_list[5]  # 身高
        love_txt = selector.css('.love-blind-female .love-blind-info .love-blind-txt::text').get()
        img_url = selector.css('.view-cont .thread-cont img::attr(src)').get().replace('http:', 'https:')
        # ctrl + D
        dit = {
            '标题': title,
            '幸运号': love_num,
            '性别': sex,
            '年龄': age,
            '星座': constellation,
            '年薪': money,
            '学历': edu,
            '身高': height,
            '爱情宣言': love_txt,
            '照片': img_url,
            '详情页': url,
        }
        csv_writer.writerow(dit)
        print(img_url)
        # 获取图片数据
        img_content = requests.get(url=img_url).content
        with open('img\\' + title + '.jpg', mode='wb') as f:
            f.write(img_content)
        print(dit)

最后

文章分享到这里就结束了

如果还有什么不懂的可以留言或者私信,也可以点击文末名片哦

帮自己还是帮兄弟就看你自己了!

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BoostSearch搜索引擎

今天讲的项目是基于C的Boost库的站内搜索引擎。因为Boost库内没有搜索关键字功能&#xff0c;所以在这里我们来手动实现一个这样的搜索引擎。当用户在输入框输入要查询的关键字后&#xff0c;就会快速查询出相关的 boost 库中的文档&#xff0c;弥补 boost 在线文档没有搜索功能…

C++进阶——mapset的使用

C进阶——map&set的使用 关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这 些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存…

chatgpt赋能Python-python2的阶乘

Python2中的阶乘 Python是一种高级编程语言&#xff0c;它可以用来编写各种各样的程序。在Python中&#xff0c;阶乘是一个经常用到的数学概念&#xff0c;由于其强大的计算能力和易学易用的特点&#xff0c;Python成为了计算阶乘的一个很好的工具。在这篇文章中&#xff0c;我…

MySql 数据库的锁机制和原理

MySQL是一种流行的关系型数据库管理系统&#xff0c;广泛应用于各种Web应用程序和企业级应用程序中。在MySQL中&#xff0c;锁是一种用于控制并发访问的机制&#xff0c;它可以保证数据的一致性和完整性。本文将介绍MySQL的锁机制及原理&#xff0c;包括锁的类型、级别和实现原…

Idea配置moven

moven的下载与安装 https://maven.apache.org/download.cgi 解压到指定位置&#xff0c;配置环境变量 编辑系统变量Path&#xff0c;添加变量值&#xff1a;%MAVEN_HOME%\bin winr输入cmd输入 mvn -v 出现上述界面&#xff0c;则表示成功安装Maven 新建一个文件夹作为本地…

[入门必看]数据结构5.5:树与二叉树的应用

[入门必看]数据结构5.5&#xff1a;树与二叉树的应用 第五章 树与二叉树5.5 树与二叉树的应用知识总览5.5.1 哈夫曼树5.5.2_1 并查集5.5.2_2 并查集的进一步优化 5.5.1 哈夫曼树带权路径长度哈夫曼树的定义哈夫曼树的构造哈夫曼编码应用&#xff1a;英文字母频次 5.5.2_1 并查集…

MybatisPlus详解

文章目录 1.MyBatisPlus的介绍1.1 MybatisPlus的特性讲解1.2 支持的数据库1.3 MybatisPlus的日志 2.映射2.1 自动映射规则2.2 表映射2.3 字段映射2.4 字段失效2.5 视图属性 3. 条件构造器3.1 等值查询3.1.1 eq3.1.2 allEq3.1.3 ne 不等于 3.2 范围查询3.2.1 gt 大于3.2.2 ge 大…

[Nacos] Nacos Client重要Api (一)

Instance&#xff1a;实例&#xff0c;代表一个Nacos Client主机实例。ServiceInfo&#xff1a;微服务信息实例。其包含着一个Instance列表。NamingService&#xff1a; 该接口只有一个实现类&#xff0c;NacosNamingService。通过这个类的实例&#xff0c;可以完成Client与Ser…

数据结构篇六:二叉树

文章目录 前言1. 树的概念及结构1.1 树的概念1.2 树的相关概念1.3 树的结构 2. 二叉树的概念及结构2.1 二叉树的概念2.2 特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储结构 3. 二叉树的顺序结构及实现3.1 二叉树的顺序结构3.2 堆的概念及结构3.3 堆的实现3.3.1 堆的创建3.3.2 …

如何在命令提示符中备份Windows设备驱动程序

如果清理安装Windows,则需要为系统中的每个设备安装驱动程序。制造商可能不再提供其中一些设备驱动程序,或者你放错了制造商的驱动程序安装文件备份。 在进行干净安装之前备份设备驱动程序是个好主意,这样之后就可以根据需要轻松恢复这些驱动程序,我们可以按以下方法来备份…

跟着chatGPT学习:kubernetes中的Reflector、list-watcher、informer等概念

以下是我跟chatGPT学习kubernetes中Reflector、list-watcher、informer等的概念的过程 不敢保证chatGPT回答的百分之百准确。但是&#xff0c;确实帮助我了我理解&#xff01; 最终学习的是下面的图&#xff0c; 1、在kubernetes中Reflector原理&#xff1f; 在Kubernetes…

PDF工具Adobe Arcrobat Pro DC下载安装教程

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;adobe 免费获取Adobe Arcrobat Pro DC安装包 Acrobat是一款PDF&#xff08;Portable Document Format&#xff0c;便携式文档格式&#xff09;编辑软件。借助它&#xff0c;您可以以PDF格式制作和保存你的文档 &#xff0c…

Oracle数据库服务器中了locked1勒索病毒的方式与破坏用友nchome配置文件方式

随着计算机技术的不断发展&#xff0c;网络安全问题也变得日益严峻。其中&#xff0c;勒索病毒就是一种非常危险的网络威胁。它可以通过加密受害者的文件或数据库&#xff0c;使其无法正常使用&#xff0c;然后向受害者勒索赎金以解密文件。而最近收到很多企业的求助&#xff0…

什么是语音识别的语音助手?

前言 语音助手已经成为现代生活中不可或缺的一部分。人们可以通过语音助手进行各种操作&#xff0c;如查询天气、播放音乐、发送短信等。语音助手的核心技术是语音识别。本文将详细介绍语音识别的语音助手。 语音识别的基本原理 语音识别是将语音信号转换为文本的技术。语音识…

Centos7升级gcc、g++版本

Centos7默认的 gcc版本是 4.8.5 默认使用yum install gcc安装出来的gcc版本也是是4.8.5。 1.首先查看自己的 gcc 版本 gcc -v g -v如果出现&#xff1a;bash: g: 未找到命令... 则安装g&#xff1a;遇到暂停时&#xff0c;输入y继续安装 yum install gcc-c然后输入&#xf…

38、Solr Integration(2)Install Solr

文章目录 38、Solr Integration&#xff08;2&#xff09;Install Solr下载启动创建Core填充数据搜索测试 38、Solr Integration&#xff08;2&#xff09;Install Solr 下载 进入Solr下载页面Solr Downloads - Apache Solr 下载需要的版本&#xff0c;这里下载最新版9.2.1&a…

为什么我们应该选择Renderbus瑞云渲染进行 EEVEE 渲染?

在某些情况下&#xff0c;用户需要高精度、快速的渲染&#xff0c;而 EEVEE的诞生就是为了满足这种需求。Eevee&#xff08;Extra Easy Virtual Environment Engine&#xff09;是 Blender 最新的内部渲染引擎&#xff0c;由用于 Epic Games 开发的虚幻引擎的相同代码提供支持…

内存基础知识

概述 内存可存放数据。程序执行前需要先将外存中的数据放到内存中才能被CPU处理&#xff0c;因为CPU处理速度过快&#xff0c;而从硬盘读取数据较慢&#xff0c;所以内存是为了缓和CPU和硬盘之间的读取速度矛盾 在多道程序环境下&#xff0c;系统中会有多个程序并发执行&…

Git——C站最详细的Git教程,一篇学会Git(window\linux通用)

Git——C站最详细的Git教程&#xff0c;一篇学会Git(window\linux通用) 文章目录 Git——C站最详细的Git教程&#xff0c;一篇学会Git(window\linux通用)Git简介Git作用为什么要进行源代码管理?Git的诞生Git管理源代码特点Git操作流程图解 工作区暂存区和仓库区工作区暂存区仓…

Qt中QSplitter使QWidget改变屏占比

Qt系列文章目录 文章目录 Qt系列文章目录前言一、QSplitter是什么&#xff1f;二、具体代码1.头文件2.实现文件 总结 前言 在Qt中把QWidget窗体三等分&#xff0c;我想实现QWidget中的三等分窗口能够像QDockWidget类一样用鼠标拖动这三等分窗体边缘使屏占比改变。一般我们会直…