"""
功能:获取b站up榜前100
作者:Mac
时间:2020.6.21
"""
import requests
import pandas as pd
from bs4 import BeautifulSoup
target = "https://www.kanbilibili.com/rank/ups/fans"
# 请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0"
}
# 发起请求
response = requests.get(url=target, headers=headers)
html = response.content.decode()
# 解析数据
soup = BeautifulSoup(html, 'lxml')
a_lists = soup.select('.ups-list')
'''
定义一个方法:
传入一个列表(bs4数据)后,
返回另一个列表(即将写入表格的数据)
'''
def data_lists(datas):
data_text = []
for data in datas:
# print(data.text)
data_text.append(data.text)
return (data_text)
# 遍历a_lists
for a in a_lists:
# 排序
index = a.select('.index')
index_num = data_lists(index)
# ups主名
ups = a.select('.name')
ups_name = data_lists(ups)
# 粉丝数
fans = a.select('.fans')
fans_num = data_lists(fans)
# 播放数
plays = a.select('.playNum')
plays_num = data_lists(plays)
s1 = pd.Series(index_num, name='排序') #表格第一列
s2 = pd.Series(ups_name, name='up主名') #表格第二列
s3 = pd.Series(fans_num, name='粉丝数') #表格第三列
s4 = pd.Series(plays_num, name='播放数') #表格第四列
# 按列写入excel
df = pd.DataFrame({s1.name: s1, s2.name: s2, s3.name: s3, s4.name: s4})
# 消除默认的索引
df.to_excel('kanbili.xlsx', index=False)
print('Done!')
效果如下: