单身狗福利?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 相关文章推荐
Python2.x版本中maketrans()方法的使用介绍
May 19 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
python奇偶行分开存储实现代码
Mar 19 Python
pandas 将索引值相加的方法
Nov 15 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
python读取图片任意范围区域
Jan 23 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
Mar 05 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
新手学python应该下哪个版本
Jun 11 Python
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Python 中random 库的详细使用
Jun 03 #Python
详解Python常用的魔法方法
Python自动化之批量处理工作簿和工作表
Jun 03 #Python
Jupyter Notebook内使用argparse报错的解决方案
Python实现机器学习算法的分类
Jupyter Notebook 如何修改字体和大小以及更改字体样式
You might like
ajax缓存问题解决途径
2006/12/06 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
python简单文本处理的方法
2015/07/10 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
会计专业毕业生自我鉴定
2013/10/29 职场文书
初中物理教学反思
2014/01/14 职场文书
2014年招商工作总结
2014/11/22 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
Redis Stream类型的使用详解
2021/11/11 Redis