精华内容
下载资源
问答
  • 哔哩哔哩Webmagic爬虫 包括(搜索列表,详情,评论,视频播放地址-同时支持多个搜索地址进行爬取) 数据层操作可在PipelineStart操作 - 仅供学习或者其他用途个人决定!
  • Python哔哩哔哩爬虫报错403

    千次阅读 2018-11-16 09:51:37
    本文章参考于steff720的“Python爬虫如何搞定反扒的403”,在此表示感谢。 学校最近给了个爬虫作业,作业要求用Python的写,按照了部分文章写了个乙站的爬虫。 但访问网站获取视频时间的时候页面老是报403(权限...

    本文章参考于steff720的“Python爬虫如何搞定反扒的403”,在此表示感谢。

    学校最近给了个爬虫作业,作业要求用Python的写,按照了部分文章写了个乙站的爬虫。

    但访问网站获取视频时间的时候页面老是报403(权限错误)。

    下面是出问题的部分代码:

    import requests
    response2 = requests.get(apiurl,apiheaders)
    res2 = response2.content.decode()

    后来找了其他人的有没有403问题,发现是requests.get()函数的用法错了。

    在请求里添加头的写法如下才正确

    response2 = requests.get(apiurl,headers=apiheaders)

    如上,需要headers = val 

    以后发现同样403的情况再补全其他解决方法,希望该文章能对各位有所帮助。

    展开全文
  • rpid:评论的唯一标识 mid:发表评论的用户id oid:评论所属的评论区 parent:评论所属的父级评论 uname:发表评论的用户昵称 content:评论内容 使用说明 调用crawl_videos_and_replies(mid)函数启动爬虫程序,mid...

    爬取内容

    B站up主的视频信息以及所有视频评论区的评论数据

    demo链接

    https://download.csdn.net/download/xzq1207105685/14994211

    文件说明

    videos_95256449.csv:id为95256449的up主的所有视频信息
    replies_95256449.csv:id为95256449的up主的所有视频评论区的评论数据
    videos_400468157.csv:id为400468157的up主的所有视频信息
    replies_400468157.csv:id为400468157的up主的所有视频评论区的评论数据

    ps:id为400468157的up主数据量较少,用于测试程序

    字段说明

    videos:

    • title:视频标题
    • bvid:视频唯一标识
    • oid:评论区id
    • created:视频创建时间,unix时间
    • mid:up主的用户id
    • author:up主的昵称
    • description:视频介绍

    replies:

    • ctime:评论时间,unix时间
    • rpid:评论的唯一标识
    • mid:发表评论的用户id
    • oid:评论所属的评论区
    • parent:评论所属的父级评论
    • uname:发表评论的用户昵称
    • content:评论内容

    使用说明

    调用crawl_videos_and_replies(mid)函数启动爬虫程序,mid为目标up主的b站用户id。视频信息结果保存在videos_mid.csv文件内评论数据保存在replies_mid.csv文件内

    展开全文
  • 结合哔哩哔哩小助手程序 爬取思路: 自定义模块构建及框架设计: 文件目录: __init__.py: #__init__ """ 浏览json数据 videoinfo = [ data['aid'], # av号 data['view'], # 播放...

    结合 \rightarrow\rightarrow 哔哩哔哩小助手程序

    爬取思路

    自定义模块构建及框架设计

     

    文件目录

    __init__.py:

    #__init__
    
    
    """
    
    浏览json数据
    videoinfo = [
                        data['aid'],        # av号
                        data['view'],       # 播放量
                        data['like'],       # 点赞数
                        data['favorite'],   # 收藏数
                        data['share'],      # 转发数
                        data['reply'],      # 评论
                        data['danmaku'],    # 弹幕
                        data['coin'],       # 硬币数
                        data['title'],      # 标题
                        data['tname'],      # 分类
                        
                    ]
    
    """
    
    
    
    
    headers = {
        
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
        (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
        }
    
    

    WebDownloader模块:(请求并加载网页模块)

    #WebDownloader
    
    
    
    
    
    
    import requests
    from BilibiliSpider import headers
    
    
    
    
    
    class WebDownloader:
        global headers
        def __init__(self,headers=headers,timeout=6):
            self.headers = headers
            self.timeout = timeout
    
    
    
    
        #获取待爬取json网页
        def getJsonWeb(self,url):
            try:
                r = requests.get(url,headers=self.headers,timeout=self.timeout)
                r.raise_for_status()
                r.encoding=r.apparent_encoding
                return r.json()
            except:
                return "error"
    
        
    
    

    JsonParse模块:(网页内容解析)

    #JsonParse
    #
    
    
    
    import json
    from BilibiliSpider import WebDownloader
    
    import threading
    
    
    class JsonParse:
        def __init__(self,total=1,lock = threading.Lock()):
            self.lock = lock
            self.total = total
        
            
    
        #将用来存入json文件中,获取av号:[视频标题,视频分类]
        def parseStat(self,dict_json,jsonPage):
            
            
            try:
                View = jsonPage['data']['View']
                aid = View['aid']
                sort = View['tname']
                title = View['title']
                if View['aid']!=None:                        #筛选出av号,并判断是否存在
                    dict_json[aid] = [title,sort]
                    with self.lock:
                        return ""
                            
                        
                
            
            except:
                pass
    
    
            #return dict_json             
                
        
        def parseJsonImage(self,jsonPage):
            try:
                View = jsonPage['data']['View']
                picHref = View['pic']
                return picHref
            except:
                pass
                
    
    
        #用于实时爬取视频信息
        def parseJsonList(self,dict_json,jsonPage):
            try:
                View = jsonPage['data']['View']
                aid = View['aid']
                sort = View['tname']
                detail = View['desc']
                title = View['title']
                
                Stat = View['stat']
                play = Stat['view']
                like = Stat['like']
                collect = Stat['favorite']
                share = Stat['share']
                reply = Stat['reply']
                danmaku = Stat['danmaku']
                coin = Stat['coin']
    
                dict_json['视频名称:'] = title
                dict_json['AV号:'] = aid
                dict_json['分类:'] = sort
                dict_json['视频简介:'] = detail
                dict_json['播放量:'] = play
                dict_json['点赞:'] = like
                dict_json['收藏:'] = collect
                dict_json['转发:'] = share
                dict_json['评论:'] = reply
                dict_json['弹幕:'] = danmaku
                dict_json['硬币:'] = coin
                
                #for i in dict_json:
                    #print(i,end='')
                    #print(dict_json[i])
            except:
                pass
    
    

    UrlFactory模块:(api-url工厂,获取对应标题的API链接)

    #UrlFactory
    
    
    """
    detail?  :https://api.bilibili.com/x/web-interface/view/detail?&aid=77515252
    stat?    :https://api.bilibili.com/x/web-interface/archive/stat?aid=11111111
    
    """
    #api_urlStat = 'https://api.bilibili.com/x/web-interface/archive/stat?aid='
    
    
    import json
    
    
    class UrlFactory:
        
        def __init__(self,api_urlDetail='https://api.bilibili.com/x/web-interface/view/detail?&aid='):
            self.api_urlDetail = api_urlDetail
            
        
    
    
        #从json文件中获取apiUrl
        def getUrlJson(self,title):
            with open('href.json',mode='r')as fjson:
                data = json.loads(fjson.read())
                
                #av号:[视频标题,视频分类]   
                for i in data:
                
                    t = data[i][0]
                    if t == title:
                        apiUrl = self.api_urlDetail + i
                        break
             
            
            return apiUrl
            
    

    主函数A

    #下载av号
        total = 0
        dict_json={}
        v = videoInfoSpider()
        print('开始爬取apiUrl...')
        for i in range(1,2019):
            
            start = 10000
            urls = [
                "https://api.bilibili.com/x/web-interface/view/detail?&aid={}".format(j)
                for j in range(start,start+10000)
                ]
            with futures.ThreadPoolExecutor(64)as executor:
                executor.map(v.apiUrlCrawl,urls)
            print(total)
            total += 1
        with open('href.json','a')as fjson:
            data = json.dumps(dict_json,indent=4)
            fjson.write(data)
            
        print("爬取结束!")

    首先运行主函数A,得到一个json文件,作为后续实时爬取API

    紧接着UrlFactory模块的作用就来了,调用UrlFactory中的 getUrlJson()即可获得对应搜索标题的视频信息URL,根据URL请求网页,最后调用JsonParse模块即可得到相应的信息啦

     

    展开全文
  • 笔者最近需要一个bilibili的小爬虫,爬取内容包括某一个up主全部投稿视频的相关信息,包括点赞数量、投币数量、分享数量、视频时长等等 直接贴代码 import requests import json from lxml import etree import ...

    笔者最近需要一个bilibili的小爬虫,爬取内容包括某一个up主全部投稿视频的相关信息,包括点赞数量、投币数量、分享数量、视频时长等等

    直接贴代码

    import requests
    import json
    from lxml import etree
    import time
    import xlwt
    import re
    
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
        'cookie': "your cookie"
    }
    
    # 只需要把用户名,用户id,视频页数放到下面就行
    target_users = [{'user_name': '新华社', 'target_user_id': '473837611', 'pages_num': 33}]  # 要爬取的用户的id和视频的页数
    for user in target_users:
        user_id = user['target_user_id']
        user_name = user['user_name']
        pages_num = user['pages_num']
        excel = xlwt.Workbook(encoding='utf-8')
        sheet = excel.add_sheet('sheet1')
        sheet.write(0, 0, '视频名称')
        sheet.write(0, 1, '发布时间')
        sheet.write(0, 2, '视频时长')
        sheet.write(0, 3, '投币数量')
        sheet.write(0, 4, '点赞数量')
        sheet.write(0, 5, '分享数量')
        sheet.write(0, 6, '评论数量')
        sheet.write(0, 7, '弹幕数量')
        sheet.write(0, 8, '播放量')
        sheet.write(0, 9, '收藏数量')
        sheet.write(0, 10, '标签')
        count = 1
        for page in range(1, pages_num + 1):
            try:
                print("正在爬取第" + str(page) + "页数据\n")
                user_main_page_link = "https://api.bilibili.com/x/space/arc/search?mid=" + user_id + "&ps=30&tid=0&pn=" + str(
                    page) + "&keyword=&order=pubdate&jsonp=jsonp"
                user_response = requests.get(user_main_page_link, headers=headers)
                user_json = json.loads(user_response.text)
                user_datas = user_json['data']
                ls = user_datas['list']
                vlist = ls['vlist']
                for t in vlist:
                    title = t['title']  # 标题
                    length = t['length']  # 视频时长
                    bvid = t['bvid']  # 视频id
                    comment = t['comment']  # 评论数量
                    view_num = t['play']
                    video_url = 'https://www.bilibili.com/video/' + bvid  # 具体视频连接
                    aid = t['aid']
                    time.sleep(1)
                    tag_url = 'https://api.bilibili.com/x/web-interface/view/detail/tag?aid=' + str(aid)
                    tag_response = requests.get(tag_url, headers=headers)
                    tag_json = json.loads(tag_response.text)
                    tag_datas = tag_json['data']
                    tags = []
                    for tag_data in tag_datas:
                        tags.append(tag_data['tag_name'])
                    time.sleep(1)
                    video_response = requests.get(video_url, 'html.parser', headers=headers).content
                    video_text = requests.get(video_url)
                    selector = etree.HTML(video_response)
                    coin_span = selector.xpath("//span[@class='coin']")
                    coin_num = coin_span[0].xpath("text()")[0].strip(' ').strip('\n').strip(' ')  # 硬币数量
                    dm_span = selector.xpath("//span[@class='dm']")
                    dm_num = dm_span[0].xpath("text()")[0].strip(' ').strip('\n')  # 弹幕数量
                    like_span = selector.xpath("//span[@class='like']")
                    like_num = like_span[0].xpath("text()")[0].strip(' ').strip('\n')  # 喜欢数量
                    share_span = selector.xpath("//span[@class='share']")
                    share_num = share_span[0].xpath("text()")[0].strip(' ').strip('\n')  # 分享数量
                    collect_span = selector.xpath("//span[@class='collect']")
                    collect_num = collect_span[0].xpath("text()")[0].strip(' ').strip('\n')  # 收藏数量
                    publish_time = re.findall(r"(\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2})", video_text.text)[
                        2]  # 发布时间
                    sheet.write(count, 0, title)
                    sheet.write(count, 1, publish_time)
                    sheet.write(count, 2, length)
                    sheet.write(count, 3, coin_num)
                    sheet.write(count, 4, like_num)
                    sheet.write(count, 5, share_num)
                    sheet.write(count, 6, comment)
                    sheet.write(count, 7, dm_num)
                    sheet.write(count, 8, view_num)
                    sheet.write(count, 9, collect_num)
                    col = 10
                    for tag in tags:
                        sheet.write(count, col, tag)
                        col += 1
                    count += 1
                    print("已经爬取第" + str(count) + "条\n")
                time.sleep(3)
            except:
                file_name = user_name + ".xls"
                excel.save(file_name)
        file_name = user_name + ".xls"
        excel.save(file_name)
    

    原创不易,尊重原作,转载请注明,转载自:https://blog.csdn.net/kr2563

    展开全文
  • bilibili视频下载,思路详细!!!还不点进来看???
  • B站(哔哩哔哩)漫画爬虫实战

    千次阅读 多人点赞 2020-06-04 23:41:17
    最近在B站漫画发现好多白嫖资源,但是只能在线看或者用手机app看,眼睛很累,所以想着怎么把资源传到kindle上,所以准备写个爬虫。 转自:...
  • Python爬虫哔哩哔哩(bilibili)视频下载

    千次阅读 多人点赞 2020-09-27 22:08:09
    三种方式爬取B站动画小视频!
  • 近段时间在哔哩哔哩上面看了一下,发现上面有许多学习视频和娱乐视频,想把这些下载下来,但是哔哩哔哩好像只有手机版的,于是就做了这一个程序代码。
  • from selenium import webdriver import re import json from bs4 import BeautifulSoup import time from urllib import parse as url_parse import datetime import csv ...{ 爬取bilibili 指定up主的视频数据 ...
  • 首先要爬取哔哩哔哩网站的数据 , 第一步就是要分析网页,找到网上ajax异步加载的数据 即json文件,找到后还要对其爬去,这里我选正则表达式爬去网页, 其次是 对爬取的数据进行清洗,防止脏数据对生成的词云造成影响,将...
  • 爬取up主所有评论区的评论数据的小demo
  • bilibili爬虫+数据分析

    千次阅读 多人点赞 2020-07-05 08:43:34
    Python爬虫+数据分析+数据可视化实战 Python爬虫+数据分析+数据可视化实战 1. 背景介绍 2. 需求目标 3. 基于urllib的bangumi和bilibili一键爬虫脚本的编写 3.1 bangumi网站分析及爬虫脚本的编写 3.1.1 网站分析 ...
  • 爬取哔哩哔哩网站数据

    千次阅读 2019-01-04 10:48:52
    完成爬虫之前,我们这里用到的是PrettyTable(美化表单)呈现爬取数据; PrettyTable模块的安装与简单应用如下: 进入pypi.python.org查找并下载PrettyTable将其放在Python文件夹下的Scripts文件夹下 进入命令提示...
  • Github 3.6K!数据百宝箱,爬虫入门必备!

    千次阅读 多人点赞 2020-11-17 21:00:00
    这块爬虫工具支持的数据源非常多,一共有 25 个,我给大家分了 6 个类: 电商&支付网站:京东、淘宝、支付宝 电话网:中国移动、中国联通、中国电信 社交通讯:QQ好友、QQ群、朋友圈相册 信息网:知乎、哔哩哔哩、...
  • 哔哩哔哩用户数据采集及数据分析

    千次阅读 2019-10-03 13:48:59
    3:我这里的password.txt 是通过第三方库生成,7位数数字,用来拼接requests_url , 哔哩哔哩上面应该有6,7,8位的id 都有 start = time . clock ( ) words = '123456789' r = its . product ( words , ...
  • 哔哩哔哩全站视频信息爬虫(可能会漏爬)
  • 备注:哔哩哔哩经过中间经过改版,使用对应接口需要进行简单验证确认是否能够使用。 获取对应的请求参数 通过F12进行网页抓包 备注:自己实际请求过程中,发现接口对应某些请求部分报错,原
  • 通过python爬虫实现爬取哔哩哔哩视频通过python爬虫爬取blbl的一些视频1,get_url函数2,get_video函数3,video_load函数4,video_add_mp4函数5,完整代码部分6,运行结果 通过python爬虫爬取blbl的一些视频 工具:...
  • Python爬虫学习教程,万物皆可爬!每个技术大牛都是从基础慢慢的提升上去的,基础知识越深以后的发展越牛!学好python,才能玩转python,那到底怎么才能学好python? 通过爬取b站案例带领你快速掌握爬虫,掌握学习...
  • 写在前面 作为一名找不到工作的爬虫菜鸡人士来说,登陆这一块肯定是...'''PC登录哔哩哔哩''' class Bilibili_For_PC(): def __init__(self, **kwargs): for key, value in kwargs.items(): setattr(self, key, value)
  • 用requests+bs4模块完成对哔哩哔哩专栏里面图片的爬取
  • 爬取哔哩哔哩番剧的信息,包括集数与具体信息
  • Bilibili网站评论爬取尝试 前言 做数据分析用,不会贴上全部代码,但尽可能详细。(代码里有大量字典列表格式转换部分,很丑) 本想在github上应付了事,结果发现没有可以直接用的。... (哔哩哔哩在2020年左
  • 爬虫学习笔记

    2021-10-05 09:45:28
    尚硅谷2021版Python爬虫教程小白零基础速通(含python基础+爬虫案例)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Db4y1m7Ho?p=52 spider 核心: 1.获取整个网页的内容 2.解析数据★ 3.反爬 1...
  • 'UP主'+' '+'\n') for item in items: print('正在输出', item[0]) #编码默认gbk 但有些符号无法输出,此处改gb18030 #''.join() 把数组中元素转为字符串 with open('S:/学习/pycham/哔哩哔哩排行榜/HotBoard.txt', ...
  • 本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流。好了多了就不多说了喜欢的朋有可以收藏,转发请复原文...
  • 绝对有效的B站爬虫

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

    万次阅读 2018-03-18 16:17:22
    参考:我要潇潇洒洒 ... root = r"E:\崔楠\大学\大二下\自学\爬虫" text=getHTMLText(url) commentList,title=parsePage(text) ioFunc(commentList, title, root) print("Finish.") main() 输出:
  • python爬取哔哩哔哩小视频

    千次阅读 2018-10-07 13:30:59
    抓取B站每日的小视频排行榜,本周,本月采用同样方法。 ...工具:python3,谷歌浏览器,pycharm 模块:requests,time,random 网页: 打开开发者工具,按F12。刷新网页,抓取数据。我们会抓取到红色部分的一条数据。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,111
精华内容 444
热门标签
关键字:

哔哩哔哩爬虫

爬虫 订阅