当前位置:   article > 正文

要想过年不被催相亲,用python采集相亲网数据行动起来_html_data = requests.

html_data = requests.

前言

马上过年拉,现在再家,不是父母催找男(女)朋友

就是父母催相亲,那是一个着急啊!

与其父母一直催,不如我们自己先行动

指不定就遇到自己的心动真爱了呢

今天我们就来用python看看相亲网都有哪些优质妹妹吧~

环境准备

Python 3.8

Pycharm

模块使用:

import re

import csv

import parsel

import requests

安装python第三方模块:

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

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

代码实现步骤:

发送请求 获取数据 解析数据 保存数据

1. 发送请求

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

2. 获取数据

获取服务器返回响应数据

开发者工具 ---> response

3. 解析数据

提取我们想要数据内容 详情页ID ---> UID

获取详情页资料信息

4. 发送请求

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

资料详情页url地址

5. 获取数据

获取服务器返回响应数据

网页源代码

6. 解析数据

提取我们想要数据内容

基本资料信息

7. 保存数据

把数据内容保存本地

代码展示

导入模块

  1. # 导入数据请求模块
  2. import requests
  3. # 导入数据解析模块
  4. import parsel
  5. # 导入csv
  6. import csv
  7. # 导入正则
  8. import re
  1. f = open('data.csv', mode='a', encoding='utf-8', newline='')
  2. csv_writer = csv.DictWriter(f, fieldnames=['昵称',
  3. '性别',
  4. '年龄',
  5. '身高',
  6. '体重',
  7. '出生日期',
  8. '生肖',
  9. '星座',
  10. '籍贯',
  11. '所在地',
  12. '学历',
  13. '婚姻状况',
  14. '职业',
  15. '年收入',
  16. '住房',
  17. '车辆',
  18. '照片',
  19. '详情页',
  20. ])
  21. csv_writer.writeheader()
for page in range(1, 11):

  1. # 伪装模拟
  2. headers = {
  3. # User-Agent 用户代理, 表示浏览器基本信息
  4. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
  5. }
  6. response = requests.get(url=url, headers=headers)
  7. print(response)
  8. # for循环遍历, 把列表里面元素一个一个提取出来
  9. for index in response.json()['data']['items']:
  10. # https://love.19lou.com/detail/51593564 format 字符串格式化方法
  11. link = f'https://love.***.com/detail/{index["uid"]}'
  12. html_data = requests.get(url=link, headers=headers).text
  13. # 把获取下来 html字符串数据<html_data>, 转成可解析对象
  14. selector = parsel.Selector(html_data)
  15. name = selector.css('.username::text').get()
  16. info_list = selector.css('.info-tag::text').getall()
  17. # . 表示调用方法属性
  18. # 更多代码、教程、资料可添加企鹅裙:582950881领取呐~
  19. gender = info_list[0].split(':')[-1]
  20. age = info_list[1].split(':')[-1]
  21. height = info_list[2].split(':')[-1]
  22. date = info_list[-1].split(':')[-1]
  23. # 判断info_list元素个数 当元素个数4个 说明没有体重一栏
  24. if len(info_list) == 4:
  25. weight = '0kg'
  26. else:
  27. weight = info_list[3].split(':')[-1]
  28. info_list_1 = selector.css('.basic-item span::text').getall()[2:]
  29. zodiac = info_list_1[0].split(':')[-1]
  30. constellation = info_list_1[1].split(':')[-1]
  31. nativePlace = info_list_1[2].split(':')[-1]
  32. location = info_list_1[3].split(':')[-1]
  33. edu = info_list_1[4].split(':')[-1]
  34. maritalStatus = info_list_1[5].split(':')[-1]
  35. job = info_list_1[6].split(':')[-1]
  36. money = info_list_1[7].split(':')[-1]
  37. house = info_list_1[8].split(':')[-1]
  38. car = info_list_1[9].split(':')[-1]
  39. img_url = selector.css('.page .left-detail .abstract .avatar img::attr(src)').get()
  40. # 把获取下来的数据 保存字典里面 字典数据容器
  41. dit = {
  42. '昵称': name,
  43. '性别': gender,
  44. '年龄': age,
  45. '身高': height,
  46. '体重': weight,
  47. '出生日期': date,
  48. '生肖': zodiac,
  49. '星座': constellation,
  50. '籍贯': nativePlace,
  51. '所在地': location,
  52. '学历': edu,
  53. '婚姻状况': maritalStatus,
  54. '职业': job,
  55. '年收入': money,
  56. '住房': house,
  57. '车辆': car,
  58. '照片': img_url,
  59. '详情页': link,
  60. }
  61. # 更多代码、教程、资料可添加企鹅裙:582950881领取呐~
  62. csv_writer.writerow(dit)
  63. new_name = re.sub(r'[\/"*?<>|]', '', name)
  64. img_content = requests.get(url=img_url, headers=headers).content
  65. with open('data\\' + new_name + '.jpg', mode='wb') as img:
  66. img.write(img_content)
  67. print(dit)

效果展示

尾语

好啦,本文章到这里就结束拉

有喜欢的小伙伴记得给博主一个三连哦~

希望你在学习的路上不忘初心,坚持不懈,学有所成

把时间和精力,放在自己擅长的方向,去坚持与努力,

如果不知道自己擅长什么,就尽快找到它。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/204154
推荐阅读
相关标签
  

闽ICP备14008679号