爬取B站全站日榜前20數據進行數據分析與可視化


一、設計方案

1.主題式網絡爬蟲名稱:爬取B站全站日榜前20數據進行數據分析與可視化
2.爬取內容與數據特征分析:爬取B站日榜排名前20數據包括排名、事件、熱度,數據未呈一定規律排序。
3.設計方案概述:思路:首先打開目標網站,運用工具查看源代碼,尋找數據標簽,通過寫爬蟲代碼爬取所要的數據,將數據保存為csv文件,讀取csv文件對數據進行整理、可視化操作。
                            難點:網站數據的實時更新;尋找數據標簽;對數據整理、可視化等代碼的掌握程度較低。
二、主題頁面的結構特征分析
1.主題頁面的結構與特征:爬取數據分布於a標簽中,熱度標簽為td。
2.Htmls頁面解析

3.節點(標簽)查找方法與遍歷方法:通過re模塊的findall方法進行查找。
三、程序設計
1.數據爬取與采集

import re
import requests
import pandas as pd

url = 'https://tophub.today/n/74KvxwokxM' #網站數據
headers = {'user-Agent':""} #偽裝爬蟲
response=requests.get(url,headers=headers,timeout=30) #設置延遲
response = requests.get(url,headers = headers) #請求頁面
#爬取內容
html = response.text 
titles = re.findall('<a href=".*?">.*?(.*?)</a>',html)[4:24]
heat = re.findall('<td>(.*?)</td>',html)[0:20] 
   
x = {'標題':titles,'熱度':heat}
y = pd.DataFrame(x)
data=[] #創建空列表
for i in range(20):
    data.append([i+1,titles[i],heat[i][:]]) #拷貝數據

file=pd.DataFrame(data,columns=['排名','bilibili熱榜','熱度'])
print(file)
file.to_csv('D:\\bbc\\bilibili熱榜.csv') #保存文件

2.對數據進行清洗和處理

#讀取csv文件
df = pd.DataFrame(pd.read_csv('bilibili熱榜.csv'))
df.head()

#刪除無效行列
df.drop('bilibili熱榜',axis=1,inplace=True)
df.head

#缺失值處理
df.isnull().head() #True為缺失值,False為存在值

#空值處理
df.isnull().sum() #0表示無空值

#查找重復值
df.duplicated() #顯示表示已經刪除重復值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM