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

歡迎訪問 生活随笔!

生活随笔

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

python

python爬取b站用户_用Python爬取bilibili全站用户信息

發布時間:2024/9/19 python 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取b站用户_用Python爬取bilibili全站用户信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

教你用Python爬取嗶哩嗶哩全站用戶信息

運行

下載

git clone https://github.com/cexll/bili_user_Spider.git

復制代碼

運行環境

Windows/Ubuntu

Python 3.6

VSCode

依賴

requests

pymongo

mongodb

使用本腳本請先安裝好MongoDB,并且安裝好庫

pip install -r requirements.txt

復制代碼

運行

運行前請進入腳本把cookie和mid改成自己的方便第一時間給數據庫增加相應的數據

python3 spider.py

復制代碼

思路

這是用思維導圖畫的一個腳本的大致運行情況

程序的大致思路是這樣,通過mid進入用戶主目錄,然后獲取用戶個人信息并保存到數據庫,然后獲取用戶的粉絲數量以及關注數量方便之后計算頁數,下一步獲取所有的關注用戶mid以及粉絲用戶mid保存到數據庫,然后依次提取數據庫mid進入用戶主目錄循環至結束

運行過程

數據來源

數據通過bilibili官方api獲取除了獲取個人信息必須要進入用戶目錄才能成功獲取其他都可直接通過API獲取到數據

分析代碼

這里就上最主要的代碼

運行函數,首選進入用戶主頁然后獲取個人信息到數據庫

然后獲取粉絲數量以及關注數量

通過關注數量 / 50 得到頁數, 這里做了如果結果小于或等于1那么就直接當1,不然range(1, 1)是無法運行的

def run(mid):

"""

運行函數

"""

# 進入用戶主頁

get_space(mid)

# 獲取關注數量和粉絲數量

f, g = get_myinfo(mid)

# 獲取關注用戶信息

f_g_ps = 50

f_g_pn = int(g / f_g_ps)+1

if f_g_pn <= 1:

get_followers(mid, 1, f_g_ps)

else:

for g_pn in range(1, f_g_pn):

get_followings(mid, g_pn, f_g_ps)

# 獲取粉絲用戶信息

f_r_ps = 50

f_r_pn = int(f / f_r_ps)+1

print(f_r_pn)

if f_r_pn <= 1:

get_followers(mid, 1, f_r_ps)

else:

for r_pn in range(1, f_r_pn):

get_followers(mid, r_pn, f_r_ps)

# 循環

rep_run()

復制代碼

核心代碼

這里MIN必須要先初始值,就設置了一個全局變量,進入rep_run,MIN變量加一,連接list數據庫,查詢數據庫所有信息保存到result,max是從數據庫提取出來的信息最大count,接下來判斷MIN是否大于max,如果大于則說明數據庫數據已經運行完了,直接結束腳本,如果不大于則繼續循環

def rep_run():

"""

當上一個mid所有事情完成后進入此函數進行循環爬取下一個mid

"""

global MIN

# 每次運行此函數使MIN加一,不能大于max(數據庫count)

MIN += 1

collection = db.list

# 查詢數據庫所有數據保存到result

if collection.find({'id': MIN}):

ran = collection.find({'id': MIN})

# 查詢數據庫有多少條

count = collection.find({}).count()

for x in ran:

mid = x.get('mid')

if MIN > count:

print('程序即將停止運行,所有信息爬取完成')

time.sleep(10)

exit()

else:

run(mid)

else:

print('數據庫沒有該數據 id: {}'.format(MIN))

復制代碼

分析

2018-9-12 現已有10W數據進行簡單數據分析各位看官看看就好

性別分布情況

? 可以看到,還是有非常多的人不愿意透露性別的(.....)

用戶增長情況

這1970年都有大哥注冊了,真是元老啊.....但是很少,大部分元老包括b站官方站長等也是2009年

?

由于一些小問題小坑,已經將數據保存部分進行重寫,這次使用了MySQL,有興趣的可以去Github看看

總結

以上是生活随笔為你收集整理的python爬取b站用户_用Python爬取bilibili全站用户信息的全部內容,希望文章能夠幫你解決所遇到的問題。

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