python爬虫小实践:爬取bibi视频排行榜(1)


发布时间:2020-02-22 22:17    作者: Uncle Hui   已过去:7 月,1 周   阅读总量:357 已被赞:1


# 爬取哔哩哔哩热门视频排行榜

 

import requests #python3.6 内置
from bs4 import BeautifulSoup  #没有就安装:pip3 install beautifulsoup4

 

#爬取目标网址
url = 'https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3'

 

#获取目标html内容
data_html = requests.get(url).text

 

#BeautifulSoup可以将html内容解析处理 'html.parser' 告诉它是什么类型
soup = BeautifulSoup(data_html,'html.parser')

 

#获取所有的li
#find_all 找到所有的li标签,但是有些li比标签不是我们需要的,观察发现
#这些需要的li标签的class都是rank-item,所谓我们在后面加上条件
li_list = soup.findAll('li',{'class':'rank-item'})

 

#遍历li_list,
#text 显示文本内容
for i in li_list:
    # 视频标题,因为每个的标题都是li标签下的a标签里,并且class="title"
    title = i.find('a',{'class':"title"}).text
    # 视频排名
    top_num = i.find('div',{'class':"num"}).text
    # 视频得分
    rank = i.find('div',{'class':"pts"}).find('div').text
    # 播放量,
    #view_counts = i.find('div',{'class':"detail"}).find('span',{'class':'data-box'}).text
    view_counts = i.find('span',{'class':'data-box'}).text #因为span标签的 class唯一,上句可以简写
    #up主名
    #up_name = i.find('div', {'class': "detail"}).find('a').find('span',{'class':"data-box"}).text
    # up主名,上句可以这样:因为每一条li里有3个a,全部找出来取第3个内容
    up_name = i.find_all('a')[2].text
    #获取up的ID,利用get获取url,然后解析出id,利用字符串切片
    up_id =  i.find_all('a')[2].get('href')[len('//space.bilibili.com/'):]
    #视频url
    url = i.find('a',{'class':"title"}).get('href')

 

    print('排名:%s,标题:%s,得分:%s,点播量:%s,up主:%s,up_id:%s,url:%s'%(top_num,title,rank,view_counts,up_name,up_id,url))

 

已经爬取到需要的字段,下篇实现保存功能

点赞

1




登陆后方可评论