沧浪之水濯我心 发表于 2022-1-2 13:57

【原创】关于我为了找女朋友,使用python爬取一罐求撩区cpdd这件事part1

本帖最后由 沧浪之水濯我心 于 2022-1-2 17:05 编辑

【原创】关于我为了找女朋友,使用python爬取一罐求撩区这件事part1


一、前言
(一)一罐app简介
一罐app 是一款小众交友软件,可以匿名or真身发布动态进行cpdd
(二)开发本程序的目的
为了更方便的cpdd(其实是瞎吉尔开发的)
(三)本项目使用的环境
1.python3.9
2.mysql(可选)
3.Thor 我是苹果手机,使用Thor抓包的,接口为/feed/list
(四)使用方法
代码写的简陋,但是能跑就行了
使用本项目需要你自己会抓包,并且懂得一点python,会自行替换代码中的参数,需要替换的我都备注了


二、代码
import json
import time
import requests
from datetime import datetime
import mysql.connector

#请求头
headers = {
    'authority': 'api.jijigugu.club',
    'cache-control': 'max-age=0',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Microsoft Edge";v="96"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'sec-fetch-site': 'none',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-user': '?1',
    'sec-fetch-dest': 'document',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6'
}

global lastScore, count, create_time, info_result,info_result_sql
lastScore = ""
info_result = ""
count = 1
create_time = int(time.time())
info_result_sql=[]
url = 'https://api.jijigugu.club/feed/list'

#获取json
def getInfo(Score):
    params = (
      ('age', '["80+","80-","90+","00+","95+","05+","85+"]'),#这里可以自定义年龄段,比如只选择00+,删掉其他的就可以
      ('deviceId', ''),#替换你自己抓包的
      ('dist', 'appstore'),
      ('gender', ''),#这里可以选择性别,代表男女都选,代表女生
      ('lastScore', Score),#lastScore是定位用的,每次请求都只有几个数据,lastScore可以让你获取更多
      ('mid', 'Db2moNRgpB2pQ4YrOW9w'),#Db2moNRgpB2pQ4YrOW9w代表的是求撩区,不同区有不同的mid,抓包即可获得
      ('model', 'iPhone14,5'),
      ('os_version', '15.0.2'),
      ('platform', '2'),
      ('secondsFromGMT', '28800'),
      ('smDeviceId', ''),#替换你自己抓包的
      ('version', '3.14.2'),
      ('x-jike-device-properties',
         '{"idfv":"","idfa":""}'),#替换你自己抓包的
    )
    r = requests.get(url, headers=headers, params=params)
    t = json.loads(r.text)
    return t

#解析
def getList(t):
    global count, create_time, info_result,info_result_sql
    i = 0
    for nickname in t['data']:
      ttext = t['data']['text']
      text=ttext.replace("\n",",").replace(" ","")#这里是为了将动态格式化,替换换行为:,,替换空格,text是动态内容

      age = t['data']['age']#年龄段

      gender = t['data']['gender']#判断性别
      if gender == 1:
            sex = "男"
      else:
            sex = "女"

      nickname = t['data']['nickname']#发罐昵称

      #获取发动态时间
      createTime = t['data']['createTime']
      create_time = createTime
      t1 = time.localtime(createTime)
      ctime = time.strftime("%Y-%m-%d %H:%M:%S", t1)

      likedNum = t['data']['likedNum']#动态被喜欢数

      commentedNum = t['data']['commentedNum']]#动态被评论数

      #获取图片
      photo=t['data']['photos']
      purl = ""
      if photo != []:
            j=0

            for url in photo:
                turl=photo['url']
                purl += turl+';'
                j+=1

      #判断是否真身
      isReal = t['data']['user']['isReal']
      if str(isReal) == "True":
            iR = "真身"
      else:
            iR = "分身"

      i += 1

      #存入txt
      info = str(count)+','+ str(nickname)+','+ str(iR)+','+str(age)+','+str(sex)+','+ str(ctime)+','+str(likedNum)+','+ str(commentedNum)+','+text+','+str(purl)+'\n'
      info_result += info
      #存入sql
      try:
            info_result_sql.append()
      except:pass

      count += 1


def main():
    global lastScore
    #1640923200为时间戳,获取到该时间之前的所有动态
    while create_time > 1640923200:
      t = getInfo(lastScore)
      lastScore = t['lastScore']
      getList(t)

    #存入sql
    table_name=mysql_Create()
    mysql_Insert(table_name)

    #存入txt
    txt()


#存入txt
def txt():
    with open("test.txt", "w") as f:
      csv_title = "序号", "昵称", "真身", "年龄段", "性别", "创建时间", "喜欢数", "评论数", "内容", "图片地址"

      f.write(str(csv_title) + '\n')
      for row in info_result:
            try:
                f.write(str(row))
            except:pass
    f.close()

#创建sql表
def mysql_Create():
    now = datetime.now()
    table_name = "YG_" + now.strftime("%Y%m%d_%H%M")#动态现在时间创建表

    mydb = mysql.connector.connect(
      host="localhost",
      user="root",
      passwd="",#填你自己的
      database=""#填你自己的
    )
    mycursor = mydb.cursor()
    mycursor.execute("DROP TABLE IF EXISTS %s " % (table_name))
    mycursor.execute("CREATE TABLE %s (count INT,nickname VARCHAR(20), iR VARCHAR(10), age VARCHAR(10), sex VARCHAR(5), ctime VARCHAR(20), likedNum INT, commentedNum INT, text TEXT, purl TEXT)" % (table_name))
    mydb.commit()
    mydb.close()
    return table_name

#写入sql表
def mysql_Insert(table_name):

    mydb = mysql.connector.connect(
      host="localhost",
      user="root",
      passwd="",#填你自己的
      database=""#填你自己的
    )
    mycursor = mydb.cursor()
    for i in range(len(info_result_sql)):
      try:
            sql = "INSERT INTO %s (count,nickname,iR,age,sex,ctime,likedNum,commentedNum,text,purl) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"% (
            table_name,info_result_sql, info_result_sql, info_result_sql, info_result_sql,
            info_result_sql, info_result_sql, info_result_sql, info_result_sql,
            info_result_sql, info_result_sql)

            mycursor.execute(sql)
      except:pass
      mydb.commit()
    mydb.close()

if __name__ == "__main__":
    main()



三、成果







goldli 发表于 2022-1-2 14:53

请把性别写成Gender

yep96 发表于 2022-1-2 20:23

猫神 发表于 2022-1-2 15:03
老哥能不能帮忙试试,有一个药太贵了有点无力承担,但是可以小程序每天签到积分兑换

微信小程序可能比较难,小程序一般使用wx.login()请求一个字符串认证用户,这个是由微信内部算法生成的

猫神 发表于 2022-1-2 14:39

老哥想问下 想实现微信小程序每日自动打卡签到难不难 是不是也要用到python

沧浪之水濯我心 发表于 2022-1-2 14:54

猫神 发表于 2022-1-2 14:39
老哥想问下 想实现微信小程序每日自动打卡签到难不难 是不是也要用到python

嗯,不麻烦的快捷指令也行

猫神 发表于 2022-1-2 15:03

沧浪之水濯我心 发表于 2022-1-2 14:54
嗯,不麻烦的快捷指令也行

老哥能不能帮忙试试,有一个药太贵了有点无力承担,但是可以小程序每天签到积分兑换{:1_896:}

huanglang 发表于 2022-1-2 15:20

一罐被封了 想要注销 官方不能注销 有没有方法解决啊

echo1612 发表于 2022-1-2 15:48

所以 ,楼主女朋友找到了吗 (滑稽脸

leipop 发表于 2022-1-2 16:20

厉害厉害

kk1212 发表于 2022-1-2 17:17

技术不错,女朋友表示很满意

菠萝蜜 发表于 2022-1-2 17:46

技术不错,女朋友表示很认同
页: [1] 2 3
查看完整版本: 【原创】关于我为了找女朋友,使用python爬取一罐求撩区cpdd这件事part1