单身狗福利?Python爬取某婚恋网征婚数据


Posted in Python onJune 03, 2021

目标网址https://www.csflhjw.com/zhenghun/34.html?page=1

一、打开界面

单身狗福利?Python爬取某婚恋网征婚数据

鼠标右键打开检查,方框里为你一个文小姐的征婚信息。。由此判断出为同步加载

单身狗福利?Python爬取某婚恋网征婚数据

点击elements,定位图片地址,方框里为该女士的url地址及图片地址

单身狗福利?Python爬取某婚恋网征婚数据

可以看出该女士的url地址不全,之后在代码中要进行url的拼接,看一下翻页的url地址有什么变化

点击第2页
https://www.csflhjw.com/zhenghun/34.html?page=2

点击第3页
https://www.csflhjw.com/zhenghun/34.html?page=3

可以看出变化在最后
做一下fou循环格式化输出一下。。一共10页

单身狗福利?Python爬取某婚恋网征婚数据

二、代码解析

1.获取所有的女士的url,xpath的路径就不详细说了。。

单身狗福利?Python爬取某婚恋网征婚数据

2.构造每一位女士的url地址

单身狗福利?Python爬取某婚恋网征婚数据

3.然后点开一位女士的url地址,用同样的方法,确定也为同步加载

单身狗福利?Python爬取某婚恋网征婚数据

4.之后就是女士url地址html的xpath提取,每个都打印一下,把不要的过滤一下

单身狗福利?Python爬取某婚恋网征婚数据
单身狗福利?Python爬取某婚恋网征婚数据

5.最后就是文件的保存

单身狗福利?Python爬取某婚恋网征婚数据

打印结果:

单身狗福利?Python爬取某婚恋网征婚数据
单身狗福利?Python爬取某婚恋网征婚数据

三、完整代码

# !/usr/bin/nev python
# -*-coding:utf8-*-

import requests, os, csv
from pprint import pprint
from lxml import etree

def main():
    for i in range(1, 11):
        start_url = 'https://www.csflhjw.com/zhenghun/34.html?page={}'.format(i)

        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/87.0.4280.88 Safari/537.36'

        }
        response = requests.get(start_url, headers=headers).content.decode()
        # # pprint(response)
        # 3 解析数据
        html_str = etree.HTML(response)
        info_urls = html_str.xpath(r'//div[@class="e"]/div[@class="e-img"]/a/@href')
        # pprint(info_urls)

        # 4、循环遍历 构造img_info_url
        for info_url in info_urls:
            info_url = r'https://www.csflhjw.com' + info_url
            # print(info_url)
            # 5、对info_url发请求,解析得到img_urls
            response = requests.get(info_url, headers=headers).content.decode()
            html_str = etree.HTML(response)
            # pprint(html_str)
            img_url = 'https://www.csflhjw.com/' + html_str.xpath(r'/html/body/div[4]/div/div[1]/div[2]/div[1]/div['
                                                                r'1]/img/@src')[0]
            # pprint(img_url)
            name = html_str.xpath(r'//div[@class="team-info"]/div[@class="team-e"]/h2/text()')[0]
            # pprint(name)
            xueli = html_str.xpath(r'//div[@class="team-info"]/div[@class="team-e"]/p[1]/text()')[0].split(':')[1]
            # pprint(xueli)
            job = html_str.xpath(r'//div[@class="team-info"]/div[@class="team-e"]/p[2]/text()')[0].split(':')[1]
            # pprint(job)
            marital_status = html_str.xpath(r'//div[@class="team-info"]/div[@class="team-e"]/p[3]/text()')[0].split(
                ':')[1]
            # pprint(marital_status)
            is_child = html_str.xpath(r'//div[@class="team-info"]/div[@class="team-e"]/p[4]/text()')[0].split(':')[1]
            # pprint(is_child)
            home = html_str.xpath(r'//div[@class="team-info"]/div[@class="team-e"]/p[5]/text()')[0].split(':')[1]
            # pprint(home)
            workplace = html_str.xpath(r'//div[@class="team-info"]/div[@class="team-e"]/p[6]/text()')[0].split(':')[1]
            # pprint(workplace)
            requ = html_str.xpath(r'/html/body/div[4]/div/div[1]/div[2]/div[2]/div[2]/p[2]/span/text()')[0].split(':')[1]
            # pprint(requ)
            requ = [requ if requ != str() else '无要求'][0]
            monologue = html_str.xpath(r'//div[@class="hunyin-1-3"]/p/text()')
            # pprint(monologue)
            monologue = [monologue[0].replace(' ', '').replace('\xa0', '') if monologue !=list() else '无'][0]
            # pprint(monologue)
            zeo_age = html_str.xpath(r'/html/body/div[4]/div/div[1]/div[2]/div[2]/div[2]/p[1]/span[1]/text()')[0].split(':')[1]
            zeo_age = [zeo_age if zeo_age!=str() else '无要求'][0]
            # pprint(zeo_age)
            zeo_address = html_str.xpath(r'/html/body/div[4]/div/div[1]/div[2]/div[2]/div[2]/p[1]/span[2]/text()')[0].split(':')[1]
            zeo_address = [zeo_address if zeo_address!=str() else '无要求'][0]
            # pprint(zeo_address)

            if not os.path.exists(r'./{}'.format('妹子信息数据')):
                os.mkdir(r'./{}'.format('妹子信息数据'))
                csv_header = ['姓名', '学历', '职业', '婚姻状况', '有无子女', '是否购房', '工作地点', '择偶年龄', '择偶城市', '择偶要求', '个人独白', '照片链接']
                with open(r'./{}/{}.csv'.format('妹子信息数据', '妹子数据'), 'w', newline='', encoding='gbk') as file_csv:
                    csv_writer_header = csv.DictWriter(file_csv, csv_header)
                    csv_writer_header.writeheader()

            try:
                with open(r'./{}/{}.csv'.format('妹子信息数据', '妹子数据'), 'a+', newline='',
                          encoding='gbk') as file_csv:
                    csv_writer = csv.writer(file_csv, delimiter=',')
                    csv_writer.writerow([name, xueli, job, marital_status, is_child, home, workplace, zeo_age,
                                         zeo_address, requ, monologue, img_url])
                    print(r'***妹子信息数据:{}'.format(name))
            except Exception as e:
                with open(r'./{}/{}.csv'.format('妹子信息数据', '妹子数据'), 'a+', newline='',
                          encoding='utf-8') as file_csv:
                    csv_writer = csv.writer(file_csv, delimiter=',')
                    csv_writer.writerow([name, xueli, job, marital_status, is_child, home, workplace, zeo_age,
                                         zeo_address, requ, monologue, img_url])
                    print(r'***妹子信息数据保存成功:{}'.format(name))



if __name__ == '__main__':
    main()

到此这篇关于单身狗福利?Python爬取某婚恋网征婚数据的文章就介绍到这了,更多相关Python爬取征婚数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
python动态加载包的方法小结
Apr 18 Python
Python判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
python匿名函数用法实例分析
Aug 03 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
Feb 17 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Python 中random 库的详细使用
Jun 03 #Python
详解Python常用的魔法方法
Python自动化之批量处理工作簿和工作表
Jun 03 #Python
Jupyter Notebook内使用argparse报错的解决方案
Python实现机器学习算法的分类
Jupyter Notebook 如何修改字体和大小以及更改字体样式
You might like
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
PHP实现文件安全下载
2006/10/09 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
Javascript this指针
2009/07/30 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
文明美德伴我成长演讲稿
2014/05/12 职场文书
就职演讲稿范文
2014/05/19 职场文书
学校社团活动总结
2015/05/07 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js