前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >b站动漫_python爬b站视频

b站动漫_python爬b站视频

作者头像
全栈程序员站长
发布2022-09-25 12:43:03
1.1K0
发布2022-09-25 12:43:03
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全

。。。闲来无事,爬了一下我最爱的B站~~~卒 首先进入B站的番剧索引页 ps:以前经常浏览这个索引页找动漫看,所以熟练的操作~滑稽

在这里插入图片描述
在这里插入图片描述

翻页发现url链接并没有改变,用谷歌开发者工具network发现加载了XHR文件并返回json格式的响应

在这里插入图片描述
在这里插入图片描述

放到atom里看下数据是咋样的

在这里插入图片描述
在这里插入图片描述

要对其进行翻页处理,观察一下query string的规律,发现那么多个参数只有page这个参数是变化的

在这里插入图片描述
在这里插入图片描述

所以接下来都很好做了~嘻嘻 items.py

代码语言:javascript
复制
import scrapy
from scrapy import Field

class BilibiliItem(scrapy.Item):

    title = Field()
    cover = Field()
    sum_index = Field()
    is_finish = Field()
    link = Field()
    follow = Field()
    plays = Field()
    score = Field()
    _id = Field()

bzhan.py

代码语言:javascript
复制
import scrapy
import demjson #这个库要pip一哈
from scrapy.selector import Selector
from bilibili.items import BilibiliItem
from random import randint

class BzhanSpider(scrapy.Spider):
    name = 'bzhan'
    allowed_domains = ['bilibili.com']
    start_urls = ['https://bangumi.bilibili.com/media/web_api/search/result?season_version=-1&area=-1&is_finish=-1&copyright=-1&season_status=-1&season_month=-1&pub_date=-1&style_id=-1&order=3&st=1&sort=0&page=1&season_type=1&pagesize=20']

    def parse(self, response):
        json_content = demjson.decode(response.body)
        datas = json_content["result"]["data"]
        item = BilibiliItem()
        for data in datas:
            cover = data['cover']
            sum_index = data['index_show']
            is_finish = data['is_finish']
            is_finish = '已完结' if is_finish == 1 else '未完结'
            link = data['link']
            follow = data['order']['follow']
            plays = data['order']['play']

            try:
                score = data['order']['score']
            except:
                score = '未知'
            title = data['title']

            item['_id'] = title
            item['cover'] = cover
            item['sum_index'] = sum_index
            item['is_finish'] = is_finish
            item['link'] = link
            item['follow'] = follow
            item['plays'] = plays
            item['score'] = score
            item['title'] = title

            yield item
        urls = ['https://bangumi.bilibili.com/media/web_api/search/result?season_version=-1&area=-1&is_finish=-1&copyright=-1&season_status=-1&season_month=-1&pub_date=-1&style_id=-1&order=3&st=1&sort=0&page={0}&season_type=1&pagesize=20'.format(k) for k in range(2,156)]
        for url in urls:
            request = scrapy.Request(url,callback=self.parse)
            yield request

利用python对象字典的方式进行解析。。不难

piplines.py

代码语言:javascript
复制
import pymongo

class BilibiliPipeline(object):
    def process_item(self, item, spider):
        client = pymongo.MongoClient('localhost', 27017)
        mydb = client['mydb']
        bilibili = mydb['bilibili']
        bilibili.insert_one(item)
        print(item)
        return item

settings.py略。。。。。。

结果可以爬取到三千多个数据

在这里插入图片描述
在这里插入图片描述

心疼我的b站一秒。。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172278.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档