• python带你们采集相亲网里的美女信息详情~


    前言

    嗨喽~大家好呀,这里是魔王呐 !

    在前不久的七夕,相信你一定遭受了情侣的暴击 😭(俺也一样)

    出去逛逛街上必见一情侣,在家打打游戏叭,发现人家情侣双排的,哭惹~

    看看小说,偶然一看,评论区也有人秀恩爱(我决不承认我酸了~)

    于是,为了给广大网友一个福利,我毅然决然的决定爬取相亲网站(绝不是我想要)


    环境开发:

    • Python 3.8

    • Pycharm

    模块使用:

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

    • parsel

    • csv

    模块安装问题:

    如果安装python第三方模块:

    1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

    2. 在pycharm中点击Terminal(终端) 输入安装命令

    安装失败原因:

    • 失败一: pip 不是内部命令

    解决方法: 设置环境变量

    • 失败二: 出现大量报红 (read time out)

    解决方法: 因为是网络链接超时, 需要切换镜像源

    清华:https://pypi.tuna.tsinghua.edu.cn/simple
    阿里云:https://mirrors.aliyun.com/pypi/simple/
    中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
    华中理工大学:https://pypi.hustunique.com/
    山东理工大学:https://pypi.sdutlinux.org/
    豆瓣:https://pypi.douban.com/simple/
    例如:pip3 install -i https://pypi.doubanio.com/simple/ 模块名

    • 失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入

    解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好
    或者你pycharm里面python解释器没有设置好


    如何配置pycharm里面的python解释器?

    1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)

    2. 点击齿轮, 选择add

    3. 添加python安装路径


    pycharm如何安装插件?

    1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)

    2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese

    3. 选择相应的插件点击 install(安装) 即可

    4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效


    请添加图片描述

    基本流程思路: 告诉你 实现reptile程序 应该怎么去操作

    一. 数据来源分析:

    1. 分析我们想要数据内容在哪里?

    请求那个网站, 可以得到相应的数据

    1. 抓包分析, 我们想要数据内容 在哪里

    通过开发者工具抓包分析… 会用 1 不会用 2

    • F12 或者 鼠标右键点击检查 选择 network <网络>
    • 通过关键字搜索 可以找寻相关数据包 —> 查看 headers

    二. 代码实现步骤:

    1. 发送请求, 模拟浏览器对于url地址发送请求

    2. 获取数据, 获取服务器返回响应数据 ----> 对应 开发者工具里面 response

    3. 解析数据, 提取我们想要数据内容 基本信息

    4. 保存数据, 保存表格里面 / 图片可以保存到文件夹里面

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

    代码

    需要更多源码、教程可点击网页端博主头像来到主页,点击左侧的流动文字免费获取哦~(可能需要往下划一下呐)

    也可以直接查看文章下方推广加助理小姐姐V免费获取呐~

    # 导入数据请求模块  ---> 第三方模块 需要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.19lou.com/r/1/19lnsxq-3.html'
    # 模拟浏览器headers
    headers = {
        'Cookie': '_Z3nY0d4C_=37XgPK9h; _DM_SID_=abfbcfb2fade7d35ee39c33b5eef7e13; screen=2543; pm_count=%7B%7D; dayCount=%5B%5D; cuid=Hd93N5CDQEk5bODgyK4cOrzXujbQHL84; JSESSIONID=370A8DC7AD014A912504354C3491C5F5; f39big=ip53; f9big=u87; _DM_S_=dc952385e06e9ac73264931ecd4bd0bc; Hm_lvt_5185a335802fb72073721d2bb161cd94=1659515619,1659592454,1659611492; fr_adv=bbs_huatan_ck; fr_adv_last=merry_thread_pc; _dm_userinfo=%7B%22uid%22%3A0%2C%22stage%22%3A%22%22%2C%22city%22%3A%22%E6%B9%96%E5%8D%97%3A%E9%95%BF%E6%B2%99%22%2C%22ip%22%3A%22175.0.62.249%22%2C%22sex%22%3A%221%22%2C%22frontdomain%22%3A%22www.19lou.com%22%2C%22category%22%3A%22%E6%83%85%E6%84%9F%2C%E5%A9%9A%E5%BA%86%2C%E6%97%B6%E5%B0%9A%22%7D; _dm_tagnames=%5B%7B%22k%22%3A%2219%E6%A5%BC%E5%A5%B3%E7%94%9F%E7%9B%B8%E4%BA%B2%22%2C%22c%22%3A29%7D%2C%7B%22k%22%3A%22%E5%A5%B3%E7%94%9F%E5%BE%81%E5%8F%8B%22%2C%22c%22%3A31%7D%2C%7B%22k%22%3A%22%E7%A1%95%E5%A3%AB%22%2C%22c%22%3A2%7D%2C%7B%22k%22%3A%22%E5%A4%A9%E7%A7%A4%E5%BA%A7%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E5%A5%B3%E7%94%9F%E5%BE%81%E5%8F%8B%22%2C%22c%22%3A21%7D%2C%7B%22k%22%3A%22%E7%9B%B8%E4%BA%B2%E8%AE%BA%E5%9D%9B%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%9D%AD%E5%B7%9E%E7%9B%B8%E4%BA%B2%E7%BD%91%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%9D%AD%E5%B7%9E%E5%BE%81%E5%A9%9A%E7%BD%91%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E5%A4%A9%E8%9D%8E%E5%BA%A7%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%221986%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%9C%AC%E7%A7%91%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%81%8B%E7%88%B1%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E5%BE%81%E5%8F%8B%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E7%A6%BB%E5%BC%82%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%81%8B%E7%88%B1%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E5%BE%81%E5%8F%8B%22%2C%22c%22%3A1%7D%5D; Hm_lpvt_5185a335802fb72073721d2bb161cd94=1659619705',
        '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 = requests.get(url=url, headers=headers)
                response 自定义变量 自己定义变量
                requests.get() 调用requests模块里面get方法
                url=url 左边url是get函数里面形式参数 右边url是我们传递进去的参数
        
        """
        # 确定请求url地址
        # url = 'https://www.19lou.com/forum-164-thread-83331619167048422-1-1.html'
        # 模拟浏览器发送请求 headers请求头
        headers = {
            'Cookie': '_Z3nY0d4C_=37XgPK9h; _DM_SID_=abfbcfb2fade7d35ee39c33b5eef7e13; screen=2543; pm_count=%7B%7D; dayCount=%5B%5D; cuid=Hd93N5CDQEk5bODgyK4cOrzXujbQHL84; JSESSIONID=370A8DC7AD014A912504354C3491C5F5; f39big=ip53; f9big=u87; _DM_S_=dc952385e06e9ac73264931ecd4bd0bc; Hm_lvt_5185a335802fb72073721d2bb161cd94=1659515619,1659592454,1659611492; fr_adv=bbs_huatan_ck; _dm_tagnames=%5B%7B%22k%22%3A%22%E5%A5%B3%E7%94%9F%E5%BE%81%E5%8F%8B%22%2C%22c%22%3A30%7D%2C%7B%22k%22%3A%2219%E6%A5%BC%E5%A5%B3%E7%94%9F%E7%9B%B8%E4%BA%B2%22%2C%22c%22%3A27%7D%2C%7B%22k%22%3A%22%E7%A1%95%E5%A3%AB%22%2C%22c%22%3A2%7D%2C%7B%22k%22%3A%22%E5%A4%A9%E7%A7%A4%E5%BA%A7%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E5%A5%B3%E7%94%9F%E5%BE%81%E5%8F%8B%22%2C%22c%22%3A21%7D%2C%7B%22k%22%3A%22%E7%9B%B8%E4%BA%B2%E8%AE%BA%E5%9D%9B%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%9D%AD%E5%B7%9E%E7%9B%B8%E4%BA%B2%E7%BD%91%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%9D%AD%E5%B7%9E%E5%BE%81%E5%A9%9A%E7%BD%91%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E5%A4%A9%E8%9D%8E%E5%BA%A7%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%221986%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%9C%AC%E7%A7%91%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%81%8B%E7%88%B1%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E5%BE%81%E5%8F%8B%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E7%A6%BB%E5%BC%82%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E6%81%8B%E7%88%B1%22%2C%22c%22%3A1%7D%2C%7B%22k%22%3A%22%E5%BE%81%E5%8F%8B%22%2C%22c%22%3A1%7D%5D; _dm_userinfo=%7B%22uid%22%3A0%2C%22stage%22%3A%22%22%2C%22city%22%3A%22%E6%B9%96%E5%8D%97%3A%E9%95%BF%E6%B2%99%22%2C%22ip%22%3A%22175.0.62.249%22%2C%22sex%22%3A%221%22%2C%22frontdomain%22%3A%22www.19lou.com%22%2C%22category%22%3A%22%E6%83%85%E6%84%9F%2C%E5%A9%9A%E5%BA%86%2C%E6%97%B6%E5%B0%9A%22%7D; Hm_lpvt_5185a335802fb72073721d2bb161cd94=1659615006; fr_adv_last=merry_thread_pc',
            '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',
        }
        # 发送请求 -->  表示请求成功
        # 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 ---> 字符串数据类型
        
        pycharm翻译是需要安装插件 ---> 找落落老师去要
        
        css选择器解析方法教学, 在系统课程 2.5个小时
        
        """
        # 转换数据类型 
        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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133

    请添加图片描述

    Python的应用学习方向有哪些?

    1. 网站开发:

    如目前优秀的全栈的 django、框架flask ,都继承了python简单、明确的风格,开发效率高、易维护,与自动化运维结合性好。

    python已经成为自动化运维平台领域的事实标准;

    python开发的网站:

    豆瓣 ,Youtube , Dropbox , 豆瓣…等等

    2.reptile程序

    在reptile领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。

    从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。

    3. 数据分析

    Python语言相对于其它解释性语言最大的特点是其庞大而活跃的科学计算生态,在数据分析、交互、可视化方面有相当完善和优秀的库.

    4. 自动化脚本

    执行许多重复的任务,例如阅读 pdf、播放音乐、查看天气、打开书签、清理文件夹等等,使用自动化脚本就无需手动一次又一次地完成这些任务,非常方便。

    5. 人工智能

    各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。

    6. 游戏开发/辅助 自动化测试 运维

    尾语

    人的一生就像在攀登高峰,勤奋是你踏实稳健的双脚,

    信念是你指引前行的向导,勇敢是你孜孜追寻的恒心。

    开心日到了,愿你站稳双脚,确定方向,向着你的理想巅峰勇敢前行,

    不用怕,未来就在你的脚下。

    —— 心灵鸡汤

    本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

    对啦!!记得三连哦~ 💕 另外,欢迎大家阅读我往期的文章呀~

    请添加图片描述

  • 相关阅读:
    AI遮天传 ML-广义线性模型(一)
    Spring AOP 详解
    51单片机直流电机控制
    催款神器!博途分期付款程序:分多个阶段定时锁机实现时间锁,再利用随机数生成动态密码解锁!适用于S71200/1500PLC
    流量封顶时代,容联七陌智能客服构筑企业“第二增长曲线”
    Python Open函数详解
    91 多边形的面积
    Java:如何在PowerPoint幻灯片中创建散点图
    大数据ClickHouse(十二):MergeTree系列表引擎之CollapsingMergeTree
    Linux: 命令:echo
  • 原文地址:https://blog.csdn.net/python56123/article/details/126237099