精华内容
下载资源
问答
  • B站爬虫

    千次阅读 2016-09-07 14:38:58
    简单啊的B站爬虫,送上代码: python版本:2.7 #coding:utf-8 __author__ = 'zhengjinwei' import sys reload(sys) sys.setdefaultencoding('utf-8') from lib import spider from lib import fileWriter import ...

    简单啊的B站爬虫,送上代码:

    python版本:2.7

    #coding:utf-8
    __author__ = 'zhengjinwei'
    
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    
    from lib import spider
    from lib import fileWriter
    import time
    import datetime
    import  os
    import random
    
    
    class BiZhanSpider:
        def __init__(self,userAgent):
            self.spider = spider.Spider(userAgent)
            self.users = {}
            self.curFilePath = self.cur_file_dir()
            
        def cur_file_dir(self):
             #获取脚本路径
             path = sys.path[0]
             #判断为脚本文件还是py2exe编译后的文件,如果是脚本文件,则返回的是脚本的目录,如果是py2exe编译后的文件,则返回的是编译后的文件路径
             if os.path.isdir(path):
                 return path
             elif os.path.isfile(path):
                 return os.path.dirname(path)
    
        #get user info specified
        def getUserSex(self,userUrl,mid,t):
            # print userUrl,mid,t
            import  json
            rep = self.spider.postHttp(userUrl,json.dumps({mid:mid,"_":t}))
            # print rep
    
    
        def getRdv(self):
            v = random.randint(0,1000)
            ret = ""
            if v >= 0 and v < 10:
                ret = "00"+str(v)
            elif v >= 10 and v < 100:
                ret = "0"+str(v)
            else:
                ret = str(v)
            return ret
    
        def getFansApiUrl(self,siteUrl):
            tempStr = siteUrl.replace("http://space.bilibili.com/","")
            tempStr = tempStr.split("/")
            mid = str(tempStr[0])
            pageIndex = str(tempStr[4])
    
            curTimeStamp = str(int(time.mktime(datetime.datetime.now().timetuple())))
            rdv = self.getRdv()
            t = curTimeStamp+rdv
            fansUrl = "http://space.bilibili.com/ajax/friend/GetFansList?mid="+mid+"&page="+pageIndex+"&_="+t
            return fansUrl,mid,t
    
    
        def go(self,pageUrl):
            fansUrl,mid,ts= self.getFansApiUrl(pageUrl)
            contents = self.spider.getRawContent(fansUrl)
    
            userInfoList = []
            import  json
            t = json.loads(contents)
            if t.has_key('data') == True:
                data = t['data']
                if data.has_key('list') == True:
                    list = data['list']
                    # print list
                    if len(list):
                        userInfoUrl = "http://space.bilibili.com/ajax/member/GetInfo"
    
                        for i in range(0,len(list)):
                            userName = list[i]['uname']
                            fid = list[i]['fid']
                            sex = self.getUserSex(userInfoUrl,fid,ts)
                            print userName,fid
                            # userUrl = "http://space.bilibili.com/"+str(fid)+"/#!/index"
                            #
                            # if sex != -1:
                            #     userInfo = {userName:userName,sex:sex}
                            #     userInfoList.append(userInfo)
                            # else:
                            #     pass
                    else:
                        pass
                else:
                    pass
            else:
                pass
    
    demo = BiZhanSpider('Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko')
    siteUrl = u"http://space.bilibili.com/2019740/#!/fans/fans/"
    
    
    demo.go(siteUrl)
    


    注意:B站的信息是动态的,需要用fireDebug 查到重定向后的URL去获取列表,详细请看接口:

    getFansApiUrl

    上面用的lib库请参考:贴吧爬虫


    展开全文
  • 绝对有效的B站爬虫

    千次阅读 2020-04-07 22:39:32
    B站爬虫关于爬虫B站爬虫 关于爬虫 之前学习爬虫的时候,研究过如何爬一些知名网站,在这里就先说爬B经验(第一次写博客,可能有一些不好的地方,见谅)。 B站爬虫 B站非vip视频爬虫...

    关于爬虫

    之前学习爬虫的时候,研究过如何爬一些知名网站,在这里就先说爬B经验(第一次写博客,可能有一些不好的地方,见谅)。

    B站爬虫

    B站非vip视频爬虫(https://www.bilibili.com/video/BV1KZ4y1j7rP):
    1.进入b站右键打开源代码;
    2.查找视频url,在源代码中视频网址是以键值对的方式来显示的,而键一般为"url",“baseUrl”,"backupUrl"这三种,所以查找看有没有以他们开头的键值对,而值就是这个视频的网址,但是如果访问是不成功的,因为需要携带一些参数
    在这里插入图片描述
    3.再次进入b站打开调试模式(F12);
    4. 进入Network,选择其中一个有cookie或者referer的请求;
    在这里插入图片描述
    5. 打开代码填入数据,其中需要cookie,referer和网站的url,但是url只能取?前面的部分,如:(https://www.bilibili.com/video/BV1KZ4y1j7rP?spm_id_from=333.851.b_7265706f7274466972737432.8)/(https://www.bilibili.com/video/BV1KZ4y1j7rP);

    import requests
    import re
    import random
    
    
    class BLBL(object):
        def __init__(self, url, cookie, referer):
            # 需要爬取的网页前缀 例如:https://www.bilibili.com/video/av49035382       ?from=search&seid=1058195128616882249
            self.base_url = url
            # cookie内容
            self.cookie = cookie
            # referer内容
            self.referer = referer
            # 请求头信息
            self.accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'
            self.accept_Encoding = 'gzip, deflate, br'
            self.accept_Language = 'zh-CN,zh;q=0.9,en;q=0.8'
            self.user_agent = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) "
    
        def html(self):
            # 访问起始网页需添加的请求头,不加的话,得不到完整的源代码(反爬)
            base_headers = {
                'Accept': self.accept,
                'Accept-Encoding': self.accept_Encoding,
                'Accept-Language': self.accept_Language,
                'Cache-Control': 'max-age=0',
                'Connection': 'keep-alive',
                'Cookie': self.cookie,
                'Host': 'www.bilibili.com',
                'Referer': self.referer,
                'Upgrade-Insecure-Requests': '1',
                'User-Agent': self.user_agent
            }
            # 请求网页
            base_response = requests.get(self.base_url, headers=base_headers)
            print(base_headers)
            # 获取网页html代码
            html = base_response.text
            # print(html.headers)
            return html
    
        def xin_xi(self, html):
            print(html)
            try:
                # 获取视频名称
                video_name = re.search('<title>(.+)</title>', html, re.S).group(1) + '.flv'
            except:
                # 如果获取失败,就随机一个名字
                video_name = str(random.randint(100000,1000000))+'.flv'
            print(video_name)
            # 获取视频链接
            download_url = re.search(r'("url":"|"baseUrl":"|"backupUrl":\[")(.+?)("|"])', html, re.S).group(2)
            print(download_url,111)
            # 获取主机信息
            host = re.search(r'//(.+\.com)', download_url, re.S).group(1)
            print(host)
            return video_name, download_url, host
    
        def video(self, html):
            # 获取视频名称,视频网址,主机
            video_name, download_url, host = self.xin_xi(html)
            # 请求视频下载地址时需要添加的请求头
            download_headers = {
                'User-Agent': self.user_agent,
                'Referer': self.referer,
                'Origin': 'https://www.bilibili.com',
                'Host': host,
                'Accept': self.accept,
                'Accept-Encoding': self.accept_Encoding,
                'Accept-Language': self.accept_Language
            }
            a = ['1.195.11.157:21158',
                '121.20.53.252:15060',
                '125.111.118.224:19365',
                '121.230.211.50:18537',
                '106.226.239.28:20426',
                '106.9.171.20:20621',
                '220.248.157.204:18528',
                '117.81.173.226:17273',
                '171.12.176.88:21839',
                '125.105.49.23:20986'
                 ]
            proxies = {'http':a[random.randint(0,len(a)-1)],
                       "https":a[random.randint(0,len(a)-1)]}
            # 获取视频资源,并写入文件
            with open(video_name, 'wb') as f:
                f.write(requests.get(download_url, headers=download_headers, stream=True, verify=False).content)
    
        def run(self):
            html = self.html()
            self.video(html)
            print('爬取成功')
    
    
    if __name__ == '__main__':
        url = "https://www.bilibili.com/video/BV1KZ4y1j7rP"
        cookie = "_uuid=9278F00B-6365-D500-55DB-4DAADCB6850711243infoc; buvid3=E14FC4C1-2188-4581-97D3-EFACEFCF8D58155840infoc; LIVE_BUVID=AUTO8115808077743891; CURRENT_FNVAL=16; rpdid=|(~umm~mm|l0J'ul)|)|~)kR; CURRENT_QUALITY=80; sid=bg12t41s; DedeUserID=18705478; DedeUserID__ckMd5=8313997e1074a9e4; SESSDATA=5fdfa014%2C1600955523%2Cff5c1*31; bili_jct=7eb850edc6b66ac4401f3d186bb1db4f; PVID=1; bsource=seo_baidu"
        referer = "https://www.bilibili.com/video/BV1KZ4y1j7rP?spm_id_from=333.851.b_7265706f7274466972737432.8"
        blbl = BLBL(url, cookie, referer)
        blbl.run()
    
    
    
    1. 运行代码如果打印爬取成功那么就完成了;
    2. 代码还需要运用requests,re,random模块,没有的话自行安装,视频爬取后是flv后缀结尾,可以下载爱奇艺万能播放器来播放,可能打开以后显示只有5秒,其实是完整的;
    3. B站vip视频普通用户是暂时没办法爬,普通用户打开vip视频和会员用户打开vip视频页面显示的源代码不一样,如果你是会员用户那么代码也能正常使用,还是只要替换url,cookie和referer就行。

    如果各位喜欢的话,下次我发布一篇爱奇艺,腾讯的爬虫.

    展开全文
  • 胆胆包B站爬虫 用NSoup解析html 因为特殊限制,所以UA需要自己写,所以自己写了个获取html的函数 官方QQ群:741963265 为什么不用Python? Python效率太低了,他毕竟是脚本语言,而C ++成本和时间耗费又过多,折中选...
  • 一、前言 以前我也想当一个业余 up 主玩一玩,...我把 B 站爬虫的代码分享一下吧! 二、热门爬虫 B 站有热门排行榜,常规爬虫流程就可以爬到。就直接上代码!import re import time import random import requests

    一、前言

    • 以前我也想当一个业余 up 主玩一玩,剪辑视频有点痛苦啊!还发现给视频命名和选择封面真的是一件 “艺术活” 于是就写了爬虫寻思着爬些热门视频信息学习学习命名的 “技术” ,想起以前在创新工厂参观学习的时候看到几位大佬使用 NLP 技术写首古诗或者写幅对联,那我可不可以做整个给视频命名的,这需要大量的样本数据,因为是个人感觉有意思,所以优先级比较低。我把 B 站爬虫的代码分享一下吧!代码难度也不大,有用的自取。

    二、热门爬虫

    • B 站有热门排行榜,常规爬虫流程就可以爬到。就直接上代码!
      import re
      import time
      import random
      import requests
      import pandas as pd
      
      
      class SpiderBStand(object):
          def __init__(self):
              self.header = {
                  "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) "
                                "AppleWebKit/537.36 (KHTML, like Gecko)"
                                " Chrome/69.0.3497.100 Safari/537.36"
              }
              self.urls = [
                  'https://www.bilibili.com/ranking/all/0/0/3',
                  'https://www.bilibili.com/ranking/all/1/0/3',
                  'https://www.bilibili.com/ranking/all/168/0/3',
                  'https://www.bilibili.com/ranking/all/3/0/3',
                  'https://www.bilibili.com/ranking/all/129/0/3',
                  'https://www.bilibili.com/ranking/all/4/0/3',
                  'https://www.bilibili.com/ranking/all/36/0/3',
                  'https://www.bilibili.com/ranking/all/188/0/3',
                  'https://www.bilibili.com/ranking/all/160/0/3',
                  'https://www.bilibili.com/ranking/all/119/0/3',
                  'https://www.bilibili.com/ranking/all/155/0/3',
                  'https://www.bilibili.com/ranking/all/5/0/3',
                  'https://www.bilibili.com/ranking/all/181/0/3'
              ]
              self.labels = ['全站', '动画', '国创相关', '音乐', '舞蹈', '游戏',
                             '科技', '数码', '生活', '鬼畜', '时尚', '娱乐', '影视']
              self.re1 = re.compile('<img alt="(.*?)" src=')
      
          def spider_data(self, url):
              titles = list()
              response = requests.get(url, headers=self.header).text
              df = self.re1.findall(response)
              titles.extend(df)
              content = pd.DataFrame()
              content["标题"] = titles
              return content
      
          def run(self):
              data_all = pd.DataFrame()
              for _url, _label in zip(self.urls, self.labels):
                  print("正在爬取", _label)
                  result = self.spider_data(_url)
                  result['所属'] = _label
                  result['排名'] = list(range(1, len(result) + 1))
                  data_all = pd.concat([data_all, result])
                  time.sleep(random.uniform(2, 4))
              data_all.to_csv("./biiStandData.csv", encoding="utf_8_sig")
      
      
      if __name__ == '__main__':
          spider = SpiderBStand()
          spider.run()
      

    三、弹幕爬虫

    • 基本需要两个步,首先视频页面 URL 组合接口 URL 得到视频 CID
    • 通过 CID 获取视频的弹幕信息(GitHub 有很多大神找出的接口)
      import re
      import json
      import requests
      
      
      class SpiderBullet(object):
          def __init__(self, video_url):
              self.video_url = video_url
      
          def run(self):
              """
              执行方法
              :return: 
              """
              info_url = self.set_video_url()
              final_url = self.settle_url(self.get_pages(info_url))
              print('得到 URL:', final_url)
              df_nol = self.get_pages(final_url)
              self.settle_df(df_nol)
      
          def set_video_url(self):
              """
              获取视频的 cid JSON数据
              :return: cid URL
              """
              cid_url = 'https://api.bilibili.com/x/player/pagelist?bvid={}&jsonp=jsonp'
              video_temp = str(self.video_url).split('/')[-1]
              print('解析 URL:', cid_url.format(video_temp))
              return cid_url.format(video_temp)
          
          def save(self):
              pass
      
          @staticmethod
          def get_pages(url_info):
              """
              负责请求页面
              :param url_info:
              :return:
              """
              response = requests.get(url_info)
              content = response.content.decode()
              return content
      
          @staticmethod
          def settle_url(df):
              """
              过滤数据,得到 URL
              :param df: 
              :return: 
              """
              final_url = "https://api.bilibili.com/x/v1/dm/list.so?oid=%s"
              temp_dict = json.loads(df)
              cid = temp_dict['data'][0]['cid']
              return final_url % cid
      
          @staticmethod
          def settle_df(df):
              """
              过滤数据,得到弹幕列表
              :param df: 
              :return: 
              """
              pattern = re.compile('<d.*?>(.*?)</d>')
              bullet_list = pattern.findall(df)
              return bullet_list
      
      
      if __name__ == '__main__':
          video_url = 'https://www.bilibili.com/video/BV1854y1B7L5'
          spider = SpiderBullet(video_url)
          spider.run()
      

    四、爬虫过程

    1. B 站热门爬虫直接运行就可以了,程序会自动保存数据。
      在这里插入图片描述在这里插入图片描述
    2. 弹幕爬虫:需要将自己想要爬取视频的 URL 替换到 video_url 即可,然后 save 方法留给各位自由发挥吧。
    展开全文
  • 简单b站爬虫

    千次阅读 2018-12-18 11:00:10
    这是一篇关于b站爬虫。 爬了一点关于一些番剧的短评,做了一图两表。 找到你要爬到番剧(这里以刀剑为例) 1.找到这样一个界面,点击到短评。 2.点F12进入开发者模式,然后点network,all。 3.在搜索框输入...

    这是一篇关于b站的爬虫。
    爬了一点关于一些番剧的短评,做了一图两表。

    找到你要爬到番剧(这里以刀剑为例)

    找个喜欢的就行
    1.找到这样一个界面,点击到短评。
    2.点F12进入开发者模式,然后点network,all。
    3.在搜索框输入list。
    4.点击搜到的list?开头的链接,然后点Preview。这就是第一个短评列表
    5.在页面上继续下滑,就会出现第二,第三个。(之所以会这样是因为,b站的短评是动态加载的)
    在这里插入图片描述

    第一步找到所有的短评链接

    在这里插入图片描述
    点击Headers,拿到url,与response headers。
    这样就获得了第一条短评,那如何获得第二条呢?
    首先我们观察一下他的前三条URL链接
    https://bangumi.bilibili.com/review/web_api/short/list?media_id=130412&folded=0&page_size=20&sort=0

    https://bangumi.bilibili.com/review/web_api/short/list?media_id=130412&folded=0&page_size=20&sort=0&cursor=76802609461338

    https://bangumi.bilibili.com/review/web_api/short/list?media_id=130412&folded=0&page_size=20&sort=0&cursor=76798314491572

    我们能很容易看出,这三条链接前面都是一样的,只有后面的cursor是不一样的,也就是说,只有我们获得cursor我们就能获得所有的短评链接。那问题来了,我要如何获得这些cursor。
    在这里插入图片描述
    我们点击第一个list,然后在右边Ctrl+F,弹出搜索框,在里面搜到的cursor我们就能找到第二条链接的cursor了。
    这样我们就能从第一个链接爬到最后一个了。

    爬虫开始

    找到链接后,这一步就很简单了。
    大家可以先自己写一下
    代码在这:

    import requests
    import traceback
    import json
    from bs4 import BeautifulSoup
    
    head = """
    Accept:*/*
    Accept-Encoding:gzip, deflate, br
    Accept-Language:zh-CN,zh;q=0.8
    Connection:keep-alive
    Cookie:_uuid=D8921E95-D8CD-BFC6-3BC0-D1F6043F776887304infoc; LIVE_BUVID=AUTO5415414913832945; sid=9y98lpeg; fts=1541502024; buvid3=661DEC67-025B-49CD-9571-B571D8FE72F9115923infoc; rpdid=olqmokllowdosposwiwww; UM_distinctid=166fddf7b4348b-059ec053287482-36624209-144000-166fddf7b4444; bp_t_offset_37429101=190003340221487243; CURRENT_FNVAL=16; stardustvideo=0; DedeUserID=128668516; DedeUserID__ckMd5=4e3d240a24288b0c; SESSDATA=1d112e0c%2C1546603364%2C33f029c1; bili_jct=992ec11646273bfe1fbcdc06f0eef927; CURRENT_QUALITY=112; BANGUMI_SS_25739_REC=250469; BANGUMI_SS_24638_REC=257435; BANGUMI_SS_25733_REC=251085; BANGUMI_SS_2543_REC=258189; Hm_lvt_4e5bdf78b2b9fcb88736fc67709f2806=1543314834,1543365468,1543459162,1544434299; bp_t_offset_128668516=196106067844789385; _dfcaptcha=8a97e23aafd3dbeedd17b19fbedf3b62
    Host:api.bilibili.com
    Referer:https://www.bilibili.com/bangumi/play/ss24588/?from=search&seid=3488276259830397637
    User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36
    """
    
    # 这是将headers的string形式转成字典形式(很方便的)
    def get_html_text(url):
        r = requests.get(url)
        try:
            r.raise_for_status()
            r.encoding = "utf-8"
            return r.text
        except:
            traceback.print_exc()
            return ""
    
    
    def save_data(msg):
        with open("message.csv", "a", encoding="utf-8") as f:
            f.write(",".join(msg) + "\n")
        # 追加存储,如果出现错误,可能需要删除原文件。
        # 文件存储在代码位置。
    
    
    def main(urlbase):
        cnt = 0  #来记录一爬了多少条评论
        total = 1 # total是总共的短评条数
        url = ""
        while cnt < total:   # 评论达到总评论条数就退出
            if not url:
                url = urlbase
            """
            这一步只是方便对url改写,方法可以有很多
            """
            # print(url)
            html = get_html_text(url)
            js = json.loads(html)  # 因为这个链接给我们的是个json的数据格式,直接用就好,不必用BeautifulSoup再加载
            # print(js)
            # print(js["result"])
            L = len(js["result"]["list"]) # 虽说每个列表里都只有20条信息,但到了最后一个列表是不一定的,所以这里要获取list的长度
            for i in range(L - 1):
                single_msg = []
                uname = js["result"]["list"][i]["author"]["uname"]
                ctime = js["result"]["list"][i]["ctime"]
                likes = js["result"]["list"][i]["likes"]
                score = js["result"]["list"][i]["user_rating"]["score"]
                content = js["result"]["list"][i]["content"]
                
                uname = uname.replace(",", ",")
                content = content.replace(",", ",")  
                """
                这里把英文逗号换成中文逗号,是为了存储。因为要存储成csv格式,为了避免出错。如果不用csv存储,就无须这一步。
                """
                single_msg.append(uname)
                single_msg.append(str(score))
                single_msg.append(content)
                single_msg.append(str(ctime))
                single_msg.append(str(likes))
                save_data(single_msg)
            #获取cursor
            cursor = js["result"]["list"][L - 1]["cursor"]
            # save_data(cursor)
            #对链接进行修改
            url = urlbase + "&cursor=" + str(cursor)
            cnt += 20
            total = js["result"]["total"]
    
    #第一条列表链接
    url = "https://bangumi.bilibili.com/review/web_api/short/list?media_id=130412&folded=0&page_size=20&sort=0"
    main(url)
    
    

    total是之前没有说到的
    这东西有什么用呢?
    因为你要爬取所有的评论,那什么时候结束就成了一个问题
    既然是爬取所有的评论,当然是爬完了结束,那什么时候是爬完了,这就是total的意义。控制结束
    total的位置也在list里,很容易看到的。

    然后就是两表一图了

    这东西自己看看就好,一个简单的数据分析。

    from pyecharts import Line
    import time
    
    with open("message.csv", "r", encoding="utf-8") as f:
        single = {}
        id = set()
        for p in f:
            p = p.split(",")
            t = time.strftime("%Y-%m-%d", time.gmtime(eval(p[3])))
            single[t] = single.get(t, 0) + 1
            id.add(t)
        # print(single)
        x = []
        y = []
        t = sorted(id)
        # print(t)
        for i in t:
            x.append(i)
            y.append(single[i])
        line = Line("评论时间分布")
        line.use_theme("dark")
        line.add("评论时间分布", x, y, is_smooth=False, is_fill=True, symbol=None, area_opacity=0.4)
        line.render("picture_line.html")
    
    from pyecharts import Pie
    
    score = []
    with open("message.csv", "r", encoding="utf-8") as f:
        score_dict = {}
        for s in f:
            s = s.split(",")
            k = s[1]
            score_dict[k] = score_dict.get(k, 0) + 1
        # print(score_dict)
        for s in range(2, 12, 2):
            score.append(score_dict[str(s)])
        # print(score)
    attr = ["一星", "二星", "三星", "四星", "五星"]
    pie = Pie(title="评分", title_pos=(0, 0), width=600)
    pie.add("评分", attr, score, center=(50, 50), is_random=False, radius=[45, 75], rosetype="center", is_legend_show=True,
            is_label_show=True)
    pie.render("Pie_picture.html")
    

    效果图:
    在这里插入图片描述
    在这里插入图片描述
    pyecharts这个库安一个就好,百度一下,有官网,有中文文档。
    如果不明白什么是csv的我说一下,就是每个词之间用英文逗号隔开,最后有个换行符。(说的可能不太清楚,不懂百度吧)

    import wordcloud
    import jieba
    
    txt = ""
    with open("memssage.csv", "r", encoding="utf-8") as f:
        for c in f:
            try:
                c = c.split(",")
                txt += c[2]
            except:
                txt += ""
    text = ""
    text += " ".join(jieba.cut(txt, cut_all=False))
    font_path = "msyh.ttc"
    stop_words = set("")
    stop_words.update(['一部', '非常', '完结 撒花', '真的', '我们', '一个', '这部', '这个', '感觉', '完结', '还是', '就是',
                       '还有', '但是', '觉得', '最后', '没有', '看到', '作品', '有点', '知道', '虽然', '为了', '什么', '撒花',
                       '这么', '番剧', '一集', '第三季', '第一集', 'tm', '啊啊啊', '时候', '不是', '已经', '这番'])
    wc = wordcloud.WordCloud(font_path=font_path,
                             stopwords=stop_words,
                             # max_font_size=50,
                             background_color="black",
                             width=1000, height=600, margin=2)
    wc.generate(text)
    
    process_word = wordcloud.WordCloud.process_text(wc, text)
    sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
    print(sort[:50])
    """
    输出前50个出现再多的词,有不想要的,请自行加入stopwords库里
    """
    wc.to_file("Wordcloud.png")
    

    效果图:
    在这里插入图片描述
    做了张词云,挺丑的。

    本人第一次写博客,有什么错误,或用词不当。
    希望大家不吝赐教。

    展开全文
  • Scrapy:b站爬虫之抓包过程 一、内容说明 一共爬取八个数据,可分为四项: 1、标题(直接xpath,不用抓包) 2、点赞、投币、收藏 3、在线观看人数 4、弹幕内容、时间、发送时间 二、抓包过程 1、点赞,投币,收藏 1、...
  • 【初码文章推荐】 程序员的自我修养 Azure系列文章 ...今天带来一个有意思的东西-分布式B站爬虫任务系统 这个小玩意源于上周在研究Azure的时候,发现云服务厂商都在推荐轻量级的存储...
  • 今天带来一个有意思的东西-分布式B站爬虫任务系统 这个小玩意源于上周在研究Azure的时候,发现云服务厂商都在推荐轻量级的存储队列服务,用来取代原有的比较重的消息队列服务,具体来说,比如阿里云就推荐使用...
  • 关于B站爬虫以及数据分析,我们已经分享了好几篇啦~ 这里做个汇总,所有博文链接如下,持续更新~ 序号 博文标题 1 Python爬取B站弹幕+Gephi绘制人物画像 2 B站热门视频信息爬取(小白版) 3 B站热门...
  • 最近需要用到B站上的一些数据,例如弹幕和评论,无意间发现B站大佬在github开源了一个B站API调用库,使用文档详细,有人更新维护。 GitHub 地址为:https://github.com/Passkou/bilibili_api 目前已经更新到了v...
  • 因为知道B站技术还是不错的。可能有难度。 分析 抱着看一看,玩一玩的态度,开始B站分析之旅。由于时间精力有限,不做太详细说明。 B站的信息。第一想到肯定不可能直接渲染,只有比较old的网站现在才会渲染到html。...
  • import requests import json import time #bv号转av号 table='fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF' tr={} for i in range(58): tr[table[i]]=i s=[11,10,3,8,4,6] ...
  • 1、b站网址:https://www.bilibili.com/bangumi/play/ss11936/ 2、弹幕网址:http://comment.bilibili.com/13306224.xml,13306224为cid 3、用python 编写爬虫,并进行文本分析,生成词云。 import urllib....
  • part 0 安装 scrapy, requests part 1 信息获取 打开番剧索引链接(https://www.bilibili.com/anime/index/) F12控制台,选中NETWORK,来到xhr文件,我们可以找到了存放番剧json的地方
  • B站爬虫之-----梨视频

    2020-08-16 23:28:48
     2020.8.16 B站爬虫之-----梨视频 今天在B站上看的一个老师讲的Xpath神器,并且做了个小实例,了解到了Xpath的强大! 首先,要想使用xpath,就得导入进来: from lxml import etree 出现不能识别的:加上/text()就...
  • 本文将用Python结合PyQt5制作一款B站视频数据爬虫小程序,可以通过输入关键字、页码以及选择存储路径后,下载相应的数据,效果如下:以下将详细介绍这个GUI工具的制作方法,如需本文完整代码,后台回复GUI。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,701
精华内容 680
关键字:

b站爬虫

爬虫 订阅