2020-02-02 实现B站数据爬取Demo1

python爬虫项目学习之B站数据爬取

简书地址

pip安装

1.pip 导包

pip install 包名

最近在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解决被墙导致的装不上库的烦恼。
最近使用得比较多并且比较顺手的是清华大学的pip源,它是官网pypi的镜像,每隔5分钟同步一次,地址为 https://pypi.tuna.tsinghua.edu.cn/simple

pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple 包名

2.项目demo1

爬取 https://www.bilibili.com/video/online.html 网站在线数据:

import requests,time
from bs4 import BeautifulSoup
import pandas as pd
\#哔哩哔哩网站爬虫demo类
\#class blibli_crawler:
\#robots的字典路径
robotsDict ={}
\#序列
blibliList =[]
\# 获取解析后的html
def getHtml(url):
    html = requests.get(url).text
    soup = BeautifulSoup(html,'html.parser')
    \#print(soup)
    return soup.findAll('div',{'class':'ebox'})
\#获取在线的信息  id=bili_report_live
def biliTuiGuangInfo(html):
    for item in html:
        title = item.find('a',{'target':'_blank'}).text.replace("\n", "").strip()
        zURL = item.find('a',{'target':'_blank'})['href'].replace("\n", "").strip()
        dlo = item.find('span',{'class':'play'}).text.replace("\n", "").strip() # 播放量
        dm = item.find('span',{'class':'dm'}).text.replace("\n", "").strip() # 评论数
        ol = item.find('p',{'class':'ol'}).find('b').text.replace("\n", "").strip() #在线人数
        dict ={'标题:':title,'地址:':zURL,'播放量:':dlo,'评论数:':dm,'在线人数:':ol}
        blibliList.append(dict)
if __name__ == '__main__':
    url ='https://www.bilibili.com/video/online.html'
    result = getHtml(url)
    \#time.sleep(6)
    biliTuiGuangInfo(result)
    print('blibliList=',blibliList)

结果:

blibliList= [
    {'在线人数:': '34545', '播放量:': '24.1万', '地址:': '//www.bilibili.com/video/av86287538', '评论数:': '3154', '标题:': '轰动全网!当初看过这片的人都说了句卧槽!'}, 
    {'在线人数:': '31428', '播放量:': '125.6万', '地址:': '//www.bilibili.com/video/av86216616', '评论数:': '9734', '标题:': '【回形针PaperClip】关于新冠肺炎的一切'}, 
    {'在线人数:': '26964', '播放量:': '13.9万', '地址:': '//www.bilibili.com/video/av86286074', '评论数:': '1.7万', '标题:': '最强花絮王!!!!!'}, 
    {'在线人数:': '24314', '播放量:': '43.2万', '地址:': '//www.bilibili.com/video/av86220261', '评论数:': '6.2万', '标题:': '在家无聊能干嘛?我把最难的“锤子”通关了!!!爆肝26小时!'}, 
    {'在线人数:': '22792', '播放量:': '74.6万', '地址:': '//www.bilibili.com/video/av86177128', '评论数:': '9839', '标题:': '成为400万粉丝的UP主之后有什么改变?【粉丝问答04】'}, 
    {'在线人数:': '18503', '播放量:': '604.9万', '地址:': '//www.bilibili.com/video/av84410951', '评论数:': '6.8万', '标题:': '【独家】《仙王的日常生活》第5集 影流三兄弟'}, 
    {'在线人数:': '17879', '播放量:': '10.5万', '地址:': '//www.bilibili.com/video/av86276406', '评论数:': '3330', '标题:': '这种又丑又萌的游戏我可太喜欢了'},
    {'在线人数:': '14409', '播放量:': '54.4万', '地址:': '//www.bilibili.com/video/av86204580', '评论数:': '1.7万', '标题:': '【1月】虚构推理 04'},
    {'在线人数:': '13881', '播放量:': '59.7万', '地址:': '//www.bilibili.com/video/av86019823', '评论数:': '4.4万', '标题:': '【散人】恐怖!!层层深入!网红惊魂死亡之谜(4P暂完结)'}, 
    {'在线人数:': '12708', '播放量:': '1372.1万', '地址:': '//www.bilibili.com/video/av77031527', '评论数:': '46.8万', '标题:': 'JOJO的奇妙冒险  星尘远征军'},
    {'在线人数:': '10550', '播放量:': '4865.4万', '地址:': '//www.bilibili.com/video/av32675854', '评论数:': '166.5万', '标题:': '【合集】JOJO的奇妙冒险 不灭钻石【独家正版】'},
    {'在线人数:': '10417', '播放量:': '1098.6万', '地址:': '//www.bilibili.com/video/av77052062', '评论数:': '44.6万', '标题:': 'JOJO的奇妙冒险 星尘远征军 埃及篇'},
    {'在线人数:': '8311', '播放量:': '93.4万', '地址:': '//www.bilibili.com/video/av85986659', '评论数:': '2.7万', '标题:': '【10月】我的英雄学院 79'},
    {'在线人数:': '8105', '播放量:': '1035.7万', '地址:': '//www.bilibili.com/video/av83369955', '评论数:': '12.6万', '标题:': '【独家】《仙王的日常生活》第4集 被大小姐堵门约会怎么办'}, 
    {'在线人数:': '7105', '播放量:': '1221.2万', '地址:': '//www.bilibili.com/video/av5155540', '评论数:': '43.2万', '标题:': '【合集】欢迎光临樱兰高校'}, 
    {'在线人数:': '6567', '播放量:': '42.3万', '地址:': '//www.bilibili.com/video/av81919838', '评论数:': '9348', '标题:': '【动画】烟花(2017)【广濑铃/菅田将晖/松隆子】'},
    {'在线人数:': '6412', '播放量:': '17.5万', '地址:': '//www.bilibili.com/video/av86216469', '评论数:': '6111', '标题:': '【恐笑游戏】撞 鬼 实 录 把鬼撞到超度的故事《港诡实录》完结'},
    {'在线人数:': '5662', '播放量:': '87.8万', '地址:': '//www.bilibili.com/video/av86187563', '评论数:': '1871', '标题:': '【新闻1+1】中考 、高考时间会推迟吗?'}, 
    {'在线人数:': '5302', '播放量:': '138.9万', '地址:': '//www.bilibili.com/video/av85965831', '评论数:': '5474', '标题:': '【抗肺炎】村长硬核广播trap《贱》'}, 
    {'在线人数:': '4078', '播放量:': '201.1万', '地址:': '//www.bilibili.com/video/av85946972', '评论数:': '1.0万', '标题:': '【罗汉鬼套路】大虫子最脏套路 miamiamia'}
]

优化一下,将数据存在excel文件中

在这之前需要导入pandas包,若win+R—>cmd–>python—>import pandas as pd —> 报错了 这需要用pip导入包。

代码如下:
import requests,time
from bs4 import BeautifulSoup
import pandas as pd   #导入pandas包
\# 哔哩哔哩网站爬虫demo类
\#class blibli_crawler:
\#robots的字典路径
robotsDict ={}
\#序列
blibliList =[]
\# 获取解析后的html
def getHtml(url):
    html = requests.get(url).text
    soup = BeautifulSoup(html,'html.parser')
    \#print(soup)
    return soup.findAll('div',{'class':'ebox'})
\#获取在线的信息  id=bili_report_live
def biliTuiGuangInfo(html):
    for item in html:
        title = item.find('a',{'target':'_blank'}).text.replace("\n", "").strip()
        zURL = item.find('a',{'target':'_blank'})['href'].replace("\n", "").strip()
        dlo = item.find('span',{'class':'play'}).text.replace("\n", "").strip() # 播放量
        dm = item.find('span',{'class':'dm'}).text.replace("\n", "").strip() # 评论数
        ol = item.find('p',{'class':'ol'}).find('b').text.replace("\n", "").strip() #在线人数
        dict ={'标题':title,'地址':zURL,'播放量':dlo,'评论数':dm,'在线人数':ol}
        blibliList.append(dict)
\#写入到excel中
def writeExcel():
    columns = ['标题','地址','播放量','评论数','在线人数']
    DF_1  = pd.DataFrame(blibliList,columns=columns)
    with pd.ExcelWriter('E:\other\爬虫数据\DF_All.xlsx') as writer:
         DF_1.to_excel(writer,sheet_name='DF_1')
if __name__ == '__main__':
    url ='https://www.bilibili.com/video/online.html'
    result = getHtml(url)
    \#time.sleep(6)
    biliTuiGuangInfo(result)
    print('blibliList=',blibliList)
    writeExcel()

效果:


pandas小试牛刀1.png
https://www.jianshu.com/p/0ec9b2ae6880

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论