| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | # Author renyupeng# coding=utf-8# @Time    : 2023/3/23 2:49 下午# @Site    : # @File    : SpiderPromoterHeader.py# @Software: PyCharm# @contact: renyupeng@c-top.com.cn# @Tel 1501435553import jsonimport requestsfrom utils.mysql_utils_pro import MysqlProUtilsclass SpiderPromoterHeader:    def __init__(self):        self.conn = MysqlProUtils()    @staticmethod    def GetUserID(promoter_id):        url = "https://www.kuaishou.com/graphql"        payload = json.dumps({            "operationName": "graphqlSearchUser",            "variables": {                "keyword": "{promoter_id}".format(promoter_id=promoter_id)            },            "query": "query graphqlSearchUser($keyword: String, $pcursor: String, $searchSessionId: String) {\n  visionSearchUser(keyword: $keyword, pcursor: $pcursor, searchSessionId: $searchSessionId) {\n    result\n    users {\n      fansCount\n      photoCount\n      isFollowing\n      user_id\n      headurl\n      user_text\n      user_name\n      verified\n      verifiedDetail {\n        description\n        iconType\n        newVerified\n        musicCompany\n        type\n        __typename\n      }\n      __typename\n    }\n    searchSessionId\n    pcursor\n    __typename\n  }\n}\n"        })        headers = {            'Cookie': 'clientid=3; client_key=65890b29; soft_did=1619580708547; didv=1674986117437; kpf=PC_WEB; clientid=3; did=web_6cdc432ef91373345c3b4f1b16559976; apdid=87629ef8-112a-405e-aa68-6532dad20945f1aacbdb5b9379d0b02fa529ecbc80c2:1681378698:1; userId=1433645207; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABO7d6hu9qxJCzWjVA62hSp9zWXg9SCNBU45lpRe7kz0KnW7FZL4QvULoBerxFtRIZceE96YcmTFvXPVu02rKu_IhCjfE5toca2N1Hxq6NNsk42T2s1U48JjbYe-48lzAOp0SU3G9wM6zSeTNcBwVJVZ-FL5u5Je0j9gzWo4gxhKIuRgFY37kWOpa7uG9JINrjynHlOhHm2Qrs_6HZHk-4ahoSWXnZQFypWC8Fi7687FtZGgfDIiCPf5NE2AVLBwwduWgffV0fhRYpMDq9izf6QN8O_7b0CCgFMAE; kuaishou.server.web_ph=cdd0202e2c6cbffc6c4425d8534a070a67c1; kpn=KUAISHOU_VISION',            'User-Agent': 'Apifox/1.0.0 (https://www.apifox.cn)',            'Content-Type': 'application/json',            'Accept': '*/*',            'Host': 'www.kuaishou.com',            'Connection': 'keep-alive'        }        response = requests.request("POST", url, headers=headers, data=payload)        print(response.text, '--------text-------------')        try:            if json.loads(response.text) is not None:                data = json.loads(response.text)["data"]                if data is not None:                    visionSearchUser = data["visionSearchUser"]                    if visionSearchUser is not None:                        userList = visionSearchUser["users"]                        if userList is not None:                            List = []                            for user in userList:                                user_id = user["user_id"]                                List.append(user_id)                            return List                    else:                        pass        except Exception as e:            print('获取用户ID错误', response.text)    @staticmethod    def GetPromoterInfo(promoter_id):        List = SpiderPromoterHeader.GetUserID(promoter_id)        listItem = []        for user_id in List:            url = "https://www.kuaishou.com/graphql"            payload = json.dumps({                "operationName": "visionProfile",                "variables": {                    "userId": user_id                },                "query": "query visionProfile($userId: String) {\n  visionProfile(userId: $userId) {\n    result\n    hostName\n    userProfile {\n      ownerCount {\n        fan\n        photo\n        follow\n        photo_public\n        __typename\n      }\n      profile {\n        gender\n        user_name\n        user_id\n        headurl\n        user_text\n        user_profile_bg_url\n        __typename\n      }\n      isFollowing\n      __typename\n    }\n    __typename\n  }\n}\n"            })            headers = {                'Cookie': 'clientid=3; client_key=65890b29; soft_did=1619580708547; didv=1674986117437; kpf=PC_WEB; clientid=3; did=web_6cdc432ef91373345c3b4f1b16559976; apdid=87629ef8-112a-405e-aa68-6532dad20945f1aacbdb5b9379d0b02fa529ecbc80c2:1681378698:1; userId=1433645207; kpn=KUAISHOU_VISION; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABJmId7nrMbNwNCAHx1plSfa7wKs8OKhC3Sh7yNwmIUAgRDb0NpoLqRQbvI4wLa-2oGiq5jAT0X4ZVgIcC1VkicZ4nfCqMoOaP_ZdJxTXtr1okc0NLqVbArL_daeHhvFs9foIyhppgogJzQIWmEelbFhy66FtfTrpPIDDU4U3iE68XzKJ3qQBPiTiRSqdybKLbiG7g4dIOJEcaR-uRWz2I7RoSTdCMiCqspRXB3AhuFugv61B-IiD_sF73q-l2oDD0TV2N22UFgv4yH9grr9eTElLXKz2tjSgFMAE; kuaishou.server.web_ph=f30c9f58ebbab9e7949f3bcf778585b81a3e',                'User-Agent': 'Apifox/1.0.0 (https://www.apifox.cn)',                'Content-Type': 'application/json',                'Accept': '*/*',                'Host': 'www.kuaishou.com',                'Connection': 'keep-alive'            }            try:                response = requests.request("POST", url, headers=headers, data=payload)                data = json.loads(response.text)["data"]                if data is not None:                    visionProfile = data["visionProfile"]                    if visionProfile is not None:                        userProfile = visionProfile["userProfile"]                        if userProfile is not None:                            fans = userProfile["ownerCount"]["fan"]                            headurl = userProfile["profile"]["headurl"]                            user_name = userProfile["profile"]["user_name"]                            item = {"fans": fans, "handurl": headurl, "promoter_name": user_name,                                    "promoter_id": promoter_id}                            listItem.append(item)                            print(listItem)                            return listItem                        else:                            continue            except Exception as e:                print('请求达人详情异常', e)    def GetPromoterID(self):        try:            sql = """select a.promoter_id from ruixuan.promoter_oerder_amount aleft join ruixuan.promoter_info bon a.promoter_id=b.promoter_idwhere b.promoter_id is null and a.`30day_gmv` is not nullgroup by a.promoter_id"""            promoterIdList = self.conn.QueryAll(sql)            return promoterIdList        except Exception as e:            print(e)    def PromoterInsert(self):        promoterIdList = self.GetPromoterID()        try:            for promoterId in promoterIdList:                print(promoterId)                try:                    listItem = SpiderPromoterHeader.GetPromoterInfo(promoterId[0])                    if listItem is not None:                        if listItem.__len__() > 0:                            for item in listItem:                                try:                                    self.conn.insert(item)                                except Exception as e:                                    print('插入错误', item)                except Exception as e:                    print(e)        except Exception as e:            print('获取达人详情错误', e)if __name__ == '__main__':    SpiderPromoterHeader().PromoterInsert()
 |