真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python如何爬取抖音用戶詳細(xì)數(shù)據(jù)

這篇文章主要介紹了python如何爬取抖音用戶詳細(xì)數(shù)據(jù),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元鄂溫克做網(wǎng)站,已為上家服務(wù),為鄂溫克各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

一、分析請(qǐng)求用戶數(shù)據(jù)的api

1. 用戶數(shù)據(jù)抓包

首先在搭建好的環(huán)境中通過(guò)Fiddle抓取用戶數(shù)據(jù)包。
python如何爬取抖音用戶詳細(xì)數(shù)據(jù)
python如何爬取抖音用戶詳細(xì)數(shù)據(jù)

2. 用戶數(shù)據(jù)包分析

2.1. 請(qǐng)求信息分析

python如何爬取抖音用戶詳細(xì)數(shù)據(jù)

  • 請(qǐng)求頭字段 | 字段 | 字段值 | | --- | --- | | 請(qǐng)求方法 | GET | | 請(qǐng)求的api | GET后面的 | | 請(qǐng)求的協(xié)議 | api后面的,系http1.1 | | 請(qǐng)求的目的主機(jī)域名 | aweme-eagle.snssdk.com | | 連接信息 | keep-alive | | Cookie | 你自己的cookies | | Accept-Encoding 編碼信息 | gzip | | X-SS-QUERIES | 請(qǐng)求的query | | token | 你自己的token | | sdk版本 | 1 | | User-Agent | 用戶代理 | | X-Khronos | 咱也不知道是啥,但是本質(zhì)上就是個(gè)時(shí)間戳 | | X-Gorgon | 加密驗(yàn)證的部分 | | X-Pods | 咱也不知道是啥,但是貌似沒有用 |

  • 請(qǐng)求的api分析

python如何爬取抖音用戶詳細(xì)數(shù)據(jù)
我們知道了請(qǐng)求的api以及請(qǐng)求頭里面都包含了哪些信息,我們就可以通過(guò)手動(dòng)構(gòu)造對(duì)應(yīng)的請(qǐng)求參數(shù)來(lái)爬取用戶的數(shù)據(jù)了。我已經(jīng)在前面的文章獲取到了1W+的用戶的uid以及sec_user_id的數(shù)據(jù)了,然后我們就可以通過(guò)這些數(shù)據(jù)來(lái)爬取用戶的詳細(xì)數(shù)據(jù)。

2.2. 響應(yīng)信息分析

python如何爬取抖音用戶詳細(xì)數(shù)據(jù)
python如何爬取抖音用戶詳細(xì)數(shù)據(jù)
python如何爬取抖音用戶詳細(xì)數(shù)據(jù)
python如何爬取抖音用戶詳細(xì)數(shù)據(jù)

二、獲取用戶數(shù)據(jù)

1.構(gòu)造請(qǐng)求api

在文章《抖音爬蟲教程,從0到1,獲取抖音用戶數(shù)據(jù)》 我們已經(jīng)介紹了爬取抖音關(guān)注列表的api及其構(gòu)造方法,其實(shí)獲取用戶詳細(xì)信息和獲取用戶的關(guān)注列表的api基本一致,主要都是需要我們自行填充用戶的user_id以及用戶的sec_user_id還有一大堆的時(shí)間戳信息,其他的信息都是不變的。下面我們構(gòu)造獲取用戶詳細(xì)信息的api
python如何爬取抖音用戶詳細(xì)數(shù)據(jù)

def construct_api(user_id, _rticket, ts, sec_user_id):
      """
      api 構(gòu)造函數(shù)
      :param user_id: 用戶的id
      :param _rticket: 時(shí)間戳
      :param ts: 時(shí)間戳
      :param sec_user_id: 用戶的加密的id
      :return: api
      """
      api = "https://aweme-eagle.snssdk.com" \
            "/aweme/v1/user/?" \
            "user_id={}" \
            "&retry_type=no_retry" \
            "&iid=1846815477740845" \
            "&device_id=47012747444" \
            "&ac=wifi&channel=wandoujia_aweme1" \
            "&aid=1128&app_name=aweme" \
            "&version_code=630" \
            "&version_name=6.3.0" \
            "&device_platform=android" \
            "&ssmix=a&device_type=HUAWEI+NXT-AL10" \
            "&device_brand=HUAWEI&language=zh" \
            "&os_api=26&os_version=8.0.0" \
            "&openudid=b202a24eb8c1538a" \
            "&manifest_version_code=630" \
            "&resolution=1080*1812" \
            "&dpi=480&update_version_code=6302" \
            "&_rticket={}" \
            "&js_sdk_version=1.16.3.5" \
            "&ts={}" \
            "&sec_user_id={}" \
            "".format(user_id, _rticket, ts, sec_user_id)
      return api

2.構(gòu)造請(qǐng)求頭

上文我們已經(jīng)分析了請(qǐng)求頭,請(qǐng)求頭的構(gòu)造也比較方便,大部分內(nèi)容都是固定的,需要我們填充的主要還是幾個(gè)時(shí)間戳以及對(duì)應(yīng)的X-Gorgon,其中X-Gorgon的構(gòu)造方法比較復(fù)雜,但是要注意填入正確的Cookie和Token你才能獲得可用的X-Gorgon,否則你的Gorgon就是不可用的。下圖是請(qǐng)求頭里面的主要信息:
python如何爬取抖音用戶詳細(xì)數(shù)據(jù)
下面我寫了一個(gè)構(gòu)造請(qǐng)求頭的函數(shù):

def construct_header(user_id, sec_user_id, cookie, query, token, user_agent, _rticket, ts):
      """
      構(gòu)造請(qǐng)求頭,需要傳入的參數(shù)如下
      :param user_id: 要爬取的用戶的uid
      :param sec_user_id: 要爬取的用戶的加密的id
      :param cookie: cookie
      :param query: 請(qǐng)求的query
      :param token: 你的token
      :param user_agent: 請(qǐng)求的user_agent
      :param _rticket: 時(shí)間戳(毫秒級(jí))
      :param ts: 時(shí)間戳(秒級(jí))
      :return: 構(gòu)造好的請(qǐng)求頭:headers
      """
      api = construct_api(user_id, _rticket, ts, sec_user_id)

      headers = {
            "Host": "aweme-eagle.snssdk.com",
            "Connection": "keep-alive",
            "Cookie": cookie,
            "Accept-Encoding": "gzip",
            "X-SS-QUERIES": query,
            "X-SS-REQ-TICKET": _rticket,
            "X-Tt-Token": token,
            "sdk-version": "1",
            "User-Agent": user_agent
      }
      x_gorgon = get_gorgon(api, cookie, token, query)
      headers["X-Khronos"] = ts
      headers["X-Gorgon"] = x_gorgon
      print(headers)
      return headers


def get_gorgon(url, cookies, token, query):
      """
      獲取headers里面的X-Gorgon
      :param url: 請(qǐng)求的api
      :param cookies: 你的cookie
      :param token: 你的token
      :param query: 你的query
      :return: gorgon
      """
      # 發(fā)起請(qǐng)求獲取X-Gorgon
      headers = {
            "dou-url": url,  # 填寫對(duì)應(yīng)的請(qǐng)求的api
            "dou-cookies": cookies,  # 填寫你的cookies
            "dou-token": token,  # 填寫你的token
            "dou-queries": query  # 填寫你的請(qǐng)求的queries
      }
      gorgon_host = "http://8.131.59.252:8080"
      res = requests.get(gorgon_host, headers=headers)
      gorgon = ""
      if res.status_code == 200:
            print("請(qǐng)求成功")
            res_gorgon = json.loads(res.text)
            if res_gorgon.get("status") == 0:
                  print("成功獲取 X-Gorgon")
                  print(res_gorgon.get("X-gorgon"))  # 你就可以用來(lái)爬數(shù)據(jù)了
                  gorgon = res_gorgon.get("X-gorgon")
            else:
                  print("獲取 X-Gorgon 失敗")
                  print(res_gorgon.get("reason"))
                  raise ValueError(res_gorgon.get("reason"))

      else:
            print("請(qǐng)求發(fā)送錯(cuò)誤/可能是你的網(wǎng)絡(luò)錯(cuò)誤,也可能是我的錯(cuò)誤,但是大概率是你那邊的錯(cuò)誤")
            raise ValueError("請(qǐng)求發(fā)送錯(cuò)誤/可能是你的網(wǎng)絡(luò)錯(cuò)誤,也可能是我的錯(cuò)誤,但是大概率是你那邊的錯(cuò)誤")
      return gorgon

3. 請(qǐng)求頭弄好了我們就可以獲取用戶數(shù)據(jù)了

def get_user_detail_info(cookie, query, token, user_agent, user_id, sec_user_id):
      """
      爬取用戶數(shù)據(jù)
      :param cookie: 你自己的cookie
      :param query: 你自己的query
      :param token: 你自己的token
      :param user_agent: 你自己的User-Agent
      :param user_id: 用戶的uid
      :param sec_user_id: 用戶的加密的uid
      :return: response
      """
      _rticket = str(time.time() * 1000).split(".")[0]
      ts = str(time.time()).split(".")[0]
      
      api = construct_api(user_id, _rticket, ts, sec_user_id)
      headers = construct_header(user_id, sec_user_id, cookie, query, token, user_agent, _rticket, ts)
      print(api)
      req = request.Request(api)
      for key in headers:
            req.add_header(key, headers[key])

      with request.urlopen(req) as f:
            data = f.read()
      return gzip.decompress(data).decode()

4. 解析用戶數(shù)據(jù)

根據(jù)上面對(duì)響應(yīng)數(shù)據(jù)的分析,其對(duì)應(yīng)的響應(yīng)數(shù)據(jù)是json格式的,而且數(shù)據(jù)特別多,分析了一下,我找了一些對(duì)我比較有用的數(shù)據(jù):

# 用戶的抖音號(hào)
unique_id=345345345O
# 用戶的user_id
uid=103600654544
# 用戶的 sec_user_id
sec_uid=MS4wLjABAAAA2_HUlxau0riJ8UBMwyd_bUtA8yzKdWepfg9nUc5wQy0
# 頭像地址
avatar_uri=26e880003aefb8cddd496
# 用戶的昵稱
nickname=成都潮人榜
# 用戶的簽名
signature=謝謝關(guān)注?
# 用戶的出生日期
birthday=1995-01-01
# 用戶的國(guó)家
country=中國(guó)
# 用戶的省份
province=四川
# 用戶的城市
city=成都
# 用戶所在的區(qū)域
district=武侯
# 用戶的粉絲數(shù)
follower_count=929219
# 用戶的關(guān)注數(shù)
following_count=15
# 發(fā)布的抖音數(shù)量
aweme_count=453
# 發(fā)布的動(dòng)態(tài)數(shù)量
dongtai_count=480
# 用戶點(diǎn)贊的視頻數(shù)
favoriting_count=322
# 總共被點(diǎn)贊的次數(shù)
total_favorited=14900700

5. 下面就可以爬取數(shù)據(jù)了

if __name__ == '__main__':
    cookie = "" # 你自己的cookie
    token = "" # 你自己的token
    query = "" # 你自己的query
    user_agent = "" # 你自己的user-agent

    user_id = 103600654544
    sec_user_id = "MS4wLjABAAAA2_HUlxau0riJ8UBMwyd_bUtA8yzKdWepfg9nUc5wQy0"

    res = get_user_detail_info(cookie,query, token, user_agent, user_id, sec_user_id)
    print(res)

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“python如何爬取抖音用戶詳細(xì)數(shù)據(jù)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


標(biāo)題名稱:python如何爬取抖音用戶詳細(xì)數(shù)據(jù)
網(wǎng)站路徑:http://weahome.cn/article/ggoccs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部