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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 获取巨量星图数据

發(fā)布時(shí)間:2023/12/14 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 获取巨量星图数据 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

巨量新圖數(shù)據(jù)目前只獲取了前端顯示的數(shù)據(jù),up主的詳細(xì)信息有個(gè)前端加密,發(fā)起的請(qǐng)求需要sign對(duì)應(yīng)才能拿到數(shù)據(jù),而且星圖的數(shù)據(jù)拿取到200條的時(shí)候就會(huì)監(jiān)測(cè)出來(lái),目前沒(méi)有解決,有人找到星圖的sign可以探討一下
1.首先想最簡(jiǎn)單的就是使用selenium模擬然后解析獲取數(shù)據(jù),但是網(wǎng)站直接監(jiān)測(cè)到seleniun,百度過(guò)一些方法,如何跳過(guò)selenium監(jiān)測(cè),目前都沒(méi)有實(shí)現(xiàn),代碼如下所示

from selenium.webdriver import Chrome from selenium.webdriver import ChromeOptionsoption = ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) option.add_experimental_option('useAutomationExtension', False) # 設(shè)置不加載圖片 # 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})""" })

最后還是老老實(shí)實(shí)的使用request模塊,代碼比較簡(jiǎn)單,直接手動(dòng)復(fù)制cookie,跳過(guò)登錄,麻煩的就是去找js請(qǐng)求,還是使用chrome的network來(lái)進(jìn)行抓包,目前的請(qǐng)求地址如下所示

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也會(huì)增加對(duì)應(yīng)的查詢條件,多拿幾次請(qǐng)求就好了。如何根據(jù)自己塞選的條件構(gòu)建請(qǐng)求地址即可,我這里有一個(gè)配置文件,目前適配的也只有如下幾個(gè)大類(lèi)
配置文件

營(yíng)銷(xiāo)目標(biāo):品牌傳播 內(nèi)容類(lèi)型:美食 內(nèi)容類(lèi)別小類(lèi)是第幾個(gè):2 粉絲數(shù)量區(qū)間: 報(bào)價(jià)區(qū)間: 所在地域: 預(yù)期cpm:1-30 預(yù)期播放量:

解析配置文件

# 解析配置文件 def par_init():with open('init.txt', 'r') as fp:for i in fp:init_list.append(i.split(':')[-1].replace('\n', '')) # 鏈接分類(lèi)的標(biāo)簽 init_dict = {'顏值達(dá)人':72, '美食':48, '搞笑劇情':97, '生活':36} # 營(yíng)銷(xiāo)目標(biāo)分類(lèi) 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'# 市場(chǎng)還是品牌mark_target_url = '&marketing_target={}&task_category=1'# 大類(lèi)target_url = '&tag={}'# 小類(lèi)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

鏈接構(gòu)建完成先去獲取一次總的數(shù)據(jù),cookie用自己的就好了

# 獲取總共的條數(shù) 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

然后遍歷總數(shù)來(lái)修改url中的page信息,重新發(fā)起請(qǐng)求,修改page信息,發(fā)起請(qǐng)求,解析數(shù)據(jù)即可

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

后期解決了sign會(huì)同步上來(lái),不過(guò)這個(gè)的sign有點(diǎn)麻煩

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。