【Python爬蟲案例】用python爬嗶哩嗶哩搜索結(jié)果

一诗祸、爬取目標(biāo)

大家好灶搜,我是 @馬哥python說 弟断,一名10年程序猿官硝。

今天分享一期爬蟲的案例樊卓,用python爬嗶哩嗶哩的搜索結(jié)果拿愧,也就是這個(gè)頁面:
爬取目標(biāo)

爬取字段,包含:
頁碼, 視頻標(biāo)題, 視頻作者, 視頻編號(hào), 創(chuàng)建時(shí)間, 視頻時(shí)長, 彈幕數(shù), 點(diǎn)贊數(shù), 播放數(shù), 收藏?cái)?shù), 分區(qū)類型, 標(biāo)簽, 視頻描述

部分爬取結(jié)果:
部分?jǐn)?shù)據(jù)

這里碌尔,我一共爬了30頁浇辜,每頁30條,共30*30=900條數(shù)據(jù)(當(dāng)然唾戚,最大爬取頁數(shù)可自定義放大)
下面柳洋,開始分析網(wǎng)頁。

打開開發(fā)者模式叹坦,在頁面搜索關(guān)鍵詞熊镣,并進(jìn)行翻頁一次,如下:
開發(fā)者模式

看到了result節(jié)點(diǎn)中的列表數(shù)據(jù)募书,就是我們要找到的視頻數(shù)據(jù)绪囱,依次查看每個(gè)具體數(shù)據(jù):
json數(shù)據(jù)

json數(shù)據(jù)
分析到這里,就可以開發(fā)爬蟲了莹捡。

二鬼吵、講解代碼

首先,導(dǎo)入用到的庫:

import requests  # 發(fā)送請(qǐng)求
import time  # 獲取時(shí)間
import os
import pandas as pd  # 保存csv數(shù)據(jù)
import re  # 數(shù)據(jù)清洗

下面篮赢,開始發(fā)送請(qǐng)求齿椅。

請(qǐng)求地址在哪獲取呢琉挖?
請(qǐng)求地址

請(qǐng)求參數(shù)在Payload里面:
請(qǐng)求參數(shù)

請(qǐng)求參數(shù)代碼:

# 請(qǐng)求參數(shù)
params = {
    '__refresh__': 'true',
    '_extra': '',
    'context': '',
    'page': page,
    'page_size': 30,
    'from_source': '',
    'from_spmid': '333.337',
    'platform': 'pc',
    'highlight': '1',
    'single_column': '0',
    'keyword': v_keyword,
    'qv_id': 'dHavr2spEK3TphPa54klZ6svdhBYOlyP',
    'category_id': '',
    'search_type': 'video',
    'dynamic_offset': 24,
    'preload': 'true',
    'com2co': 'true',
}

請(qǐng)求頭,在Request Headers里面:
請(qǐng)求頭

注意涣脚!cookie很重要示辈,如果不傳入cookie這個(gè)參數(shù),會(huì)返回412錯(cuò)誤碼涩澡!

請(qǐng)求頭代碼:

# 請(qǐng)求頭
headers = {'accept': 'application/json, text/plain, */*',
           'accept-encoding': 'gzip, deflate, br',
           'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
           # cookie必需顽耳,否則返回412
           'cookie': "換成自己的cookie",
           'origin': 'https://search.bilibili.com',
           'referer': 'https://search.bilibili.com/all?keyword={}&from_source=webtop_search&spm_id_from=333.1007&search_source=5&page=2&o=24'.format(
               v_keyword),
           'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
           'sec-ch-ua-mobile': '?0',
           'sec-ch-ua-platform      ': '"macOS"',
           'sec-fetch-dest': 'empty',
           'sec-fetch-mode': 'cors',
           'sec-fetch-site': 'same-site',
           'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
           }

發(fā)送請(qǐng)求:

# 向頁面發(fā)送請(qǐng)求
r = requests.get(url, headers=headers, params=params)
print(r.status_code)  # 查看響應(yīng)碼

解析出result列表數(shù)據(jù):

data_list = j_data['data']['result']
print('數(shù)據(jù)長度:', len(data_list))

定義空列表,并for循環(huán)追加數(shù)據(jù)妙同,以視頻標(biāo)題title為例:

for data in data_list:
    title = re.compile(r'<[^>]+>', re.S).sub('', data['title'])  # 正則表達(dá)式清洗文本
    print('視頻標(biāo)題: ' + title)
    title_list.append(title)

其他字段同理射富,不再贅述。
最后通過pandas的to_csv粥帚,保存最終數(shù)據(jù)胰耗。

# 數(shù)據(jù)保存到csv文件
df.to_csv(v_out_file, encoding='utf_8_sig', mode='a+', index=False, header=header)

to_csv的時(shí)候需加上選項(xiàng)(encoding='utf_8_sig'),否則存入數(shù)據(jù)會(huì)產(chǎn)生亂碼芒涡,尤其是windows用戶柴灯!

三、同步講解視頻

https://www.zhihu.com/zvideo/1573636442722697216


by 馬哥python說

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末费尽,一起剝皮案震驚了整個(gè)濱河市赠群,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旱幼,老刑警劉巖查描,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異柏卤,居然都是意外死亡冬三,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門缘缚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勾笆,“玉大人,你說我怎么就攤上這事桥滨∥炎Γ” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵该园,是天一觀的道長酸舍。 經(jīng)常有香客問我,道長里初,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任忽舟,我火速辦了婚禮双妨,結(jié)果婚禮上淮阐,老公的妹妹穿的比我還像新娘。我一直安慰自己刁品,他們只是感情好泣特,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挑随,像睡著了一般状您。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兜挨,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天膏孟,我揣著相機(jī)與錄音,去河邊找鬼拌汇。 笑死柒桑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的噪舀。 我是一名探鬼主播魁淳,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼与倡!你這毒婦竟也來了界逛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤纺座,失蹤者是張志新(化名)和其女友劉穎息拜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體比驻,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡该溯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了别惦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狈茉。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖掸掸,靈堂內(nèi)的尸體忽然破棺而出氯庆,到底是詐尸還是另有隱情,我是刑警寧澤扰付,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布堤撵,位于F島的核電站,受9級(jí)特大地震影響羽莺,放射性物質(zhì)發(fā)生泄漏实昨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一盐固、第九天 我趴在偏房一處隱蔽的房頂上張望荒给。 院中可真熱鬧丈挟,春花似錦、人聲如沸志电。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挑辆。三九已至例朱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鱼蝉,已是汗流浹背洒嗤。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚀乔,地道東北人烁竭。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像吉挣,于是被迫代替她去往敵國和親派撕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容