爬虫之 B 站评论

理清爬虫思路:

首先 爬取 B 站评论数据
其次 做一个词云图分析
  • 第一步:观察评论数据
    打开 B 站 UP 主 「电影最 TOP
    找到一期关于的 ·「星爷」·视频
    我们打开检查界面,可以查出评论的文件在
    在这里插入图片描述
    我们拿到评论地址的 url

    url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=39858896’
    打开这个 url 地址(如下图)
    在这里插入图片描述
    所以我们爬虫就找到了目的地

  • 第二步:开始爬虫

(1).定义请求 url 的函数

def web_get_pages(url):
    browser = webdriver.Chrome()
    browser.get(url)
    # 这里睡 3 秒,大家可以自己取实验一下,打开我们的 url 的时候,有点卡顿
    # 所以睡了三秒
    time.sleep(3)
    html = browser.page_source
    return html

(2).定义用 beautifulsoup 解析网页的函数

def parse_pages(url):
    # response = get_page(url)
    html = web_get_pages(url)
    soup = bf(html, 'lxml')
    print ("sucess to parse")
    return soup

(3).定义 储存评论的 txt 函数

def save_to_file(lists):
	# 文件地址自己定义
    with open('//comment.txt', 'a') as txt:
        for list in lists:
            txt.write(str(list.string)+"\n")
    txt.close()

注意

	list.string是 ·「关注了,因为星爷」·
	而  list  则是 ·「<span class="text">关注了,因为星爷</span>」.

这个问题曾经把握难住了很久,直到现在我才知道用 .string 的方法将<span class="text">关注了,因为星爷</span> 提取出来内容
(4).定义 选择评论 函数

def main(url):
    soup = parse_pages(url)
    # 选择所有 span 节点 并且 class 属性为 text 的内容 
    lists = soup.find_all("span", class_="text")
    save_to_file(lists)
  • 第三步:生成词云图
def create_words_picture():
    texts = open('/home/yiyang/PycharmProjects/bilibili_comment/comment.txt', 'r')
    texts = texts.readlines()
    text = ""
    for txt in texts:
        text += str(txt)
    cut_text = jieba.cut(text)
    result = "/".join(cut_text)  # 必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云
    # print(result)
    # 3、生成词云图,这里需要注意的是WordCloud默认不支持中文,所以这里需已下载好的中文字库
    # 无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'
    font_path = r"/home/yiyang/PycharmProjects/bilibili_comment/simheittf/simhei.ttf"
    wc = WordCloud(
        font_path=font_path, background_color='white', width=800,
                   height=600, max_font_size=50,
                   max_words=1000)  # ,min_font_size=10)#,
        # mode='RGBA',colormap='pink')
    wc.generate(result)
    wc.to_file(r"/home/yiyang/PycharmProjects/bilibili_comment/comment.png")  # 按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
    # 4、显示图片
    plt.figure("词云图")  # 指定所绘图名称
    plt.imshow(wc)  # 以图片的形式显示词云
    plt.axis("off")  # 关闭图像坐标系
    plt.show()

在这里插入图片描述
补充:

import requests
import time
from bs4 import BeautifulSoup as bf
from selenium import webdriver
from config import *
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud
font_path = r"/home/yiyang/PycharmProjects/bilibili_comment/simheittf/simhei.ttf"
需要自己下载中文字体 simhei 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值