日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 获取巨量星图数据

發布時間:2023/12/14 python 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 获取巨量星图数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

巨量新圖數據目前只獲取了前端顯示的數據,up主的詳細信息有個前端加密,發起的請求需要sign對應才能拿到數據,而且星圖的數據拿取到200條的時候就會監測出來,目前沒有解決,有人找到星圖的sign可以探討一下
1.首先想最簡單的就是使用selenium模擬然后解析獲取數據,但是網站直接監測到seleniun,百度過一些方法,如何跳過selenium監測,目前都沒有實現,代碼如下所示

from selenium.webdriver import Chrome from selenium.webdriver import ChromeOptionsoption = ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) option.add_experimental_option('useAutomationExtension', False) # 設置不加載圖片 # option.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) driver = Chrome(options=option) driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""" })

最后還是老老實實的使用request模塊,代碼比較簡單,直接手動復制cookie,跳過登錄,麻煩的就是去找js請求,還是使用chrome的network來進行抓包,目前的請求地址如下所示

https://www.xingtu.cn/v/api/demand/author_list/?limit=20&need_detail=true&page=1&platform_source=1&order_by=score&disable_replace_keyword=false&marketing_target=1&task_category=1&tag=1&is_filter=true

更具篩選條件的不一樣,url也會增加對應的查詢條件,多拿幾次請求就好了。如何根據自己塞選的條件構建請求地址即可,我這里有一個配置文件,目前適配的也只有如下幾個大類
配置文件

營銷目標:品牌傳播 內容類型:美食 內容類別小類是第幾個:2 粉絲數量區間: 報價區間: 所在地域: 預期cpm:1-30 預期播放量:

解析配置文件

# 解析配置文件 def par_init():with open('init.txt', 'r') as fp:for i in fp:init_list.append(i.split(':')[-1].replace('\n', '')) # 鏈接分類的標簽 init_dict = {'顏值達人':72, '美食':48, '搞笑劇情':97, '生活':36} # 營銷目標分類 mark_dict = {'品牌傳播':1, '電商帶貨':2} def creat_url():item_multiplication = 10000if len(init_list[3]) != 0:min_fans = int(init_list[3].split('-')[0])max_fans = int(init_list[3].split('-')[1])if len(init_list[4]) != 0:min_price = int(init_list[4].split('-')[0])max_price = int(init_list[4].split('-')[1])if len(init_list[6]) != 0:min_expected_cpm = int(init_list[6].split('-')[0])max_expected_cpm = int(init_list[6].split('-')[1])if len(init_list[7]) != 0:max_expected_play = int(init_list[7].split('-')[0])min_expected_play = int(init_list[7].split('-')[1])base_url = 'https://www.xingtu.cn/v/api/demand/author_list/?limit=20&need_detail=true&page=1&' \'platform_source=1&order_by=score&disable_replace_keyword=false'# 市場還是品牌mark_target_url = '&marketing_target={}&task_category=1'# 大類target_url = '&tag={}'# 小類two_target_url = '&tag_level_two={}'fans_url = '&fans_min={}&fans_max={}'price_url = '&price_max={}&price_min={}'cpm_url = '&expected_cpm__ge={max}&expected_cpm__le={min}'play_url = '&expected_play_num__le={}&expected_play_num__ge={}'url_end = '&is_filter=true'base_url = base_url + mark_target_url.format(mark_dict[init_list[0]])base_url = base_url + target_url.format(init_dict[init_list[1]])if len(init_list[2]) != 0:# print(init_dict[init_list[1]] + int(init_list[2]))base_url = base_url + two_target_url.format(init_dict[init_list[1]] + int(init_list[2]))if len(init_list[3]) != 0:base_url = base_url + fans_url.format(min_fans * item_multiplication, max_fans * item_multiplication)if len(init_list[4]) != 0:base_url = base_url + price_url.format(max_price , min_price)if len(init_list[6]) != 0:# print(max_expected_cpm,min_expected_cpm)base_url = base_url + cpm_url.format(max = min_expected_cpm, min=max_expected_cpm)if len(init_list[7]) != 0:base_url = base_url + play_url.format(max_expected_play*item_multiplication, min_expected_play*item_multiplication)base_url+=url_endreturn base_url

鏈接構建完成先去獲取一次總的數據,cookie用自己的就好了

# 獲取總共的條數 def get_total_info():url = creat_url()headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko)'' Chrome/92.0.4515.131 Safari/537.36'}cookies = {'cookies':''}resopnse = requests.get(url=url, headers=headers, cookies=cookies)item = json.loads(resopnse.text)total = int(item['data']['pagination']['total_count'])print(total)return total

然后遍歷總數來修改url中的page信息,重新發起請求,修改page信息,發起請求,解析數據即可

url = re.sub(r'page=\d', 'page='+ str(index), url)

后期解決了sign會同步上來,不過這個的sign有點麻煩

總結

以上是生活随笔為你收集整理的python 获取巨量星图数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。