吴 铭誓 2024-08-11 10:36 采纳率: 100%
浏览 0
已结题

bilibili漫画网址变化规律?

这几天看漫画时,发现bilibili漫画网页版在切换章节时,网址变化很没规律。比如

https://manga.bilibili.com/m/mc29329/536314?samewindow=true
https://manga.bilibili.com/m/mc29329/536326?samewindow=true
https://manga.bilibili.com/m/mc29329/536329?samewindow=true
这三个是连起来的章节

https://manga.bilibili.com/m/mc29329/1563064?samewindow=true
https://manga.bilibili.com/m/mc29329/1566478?samewindow=true
https://manga.bilibili.com/m/mc29329/1568822?samewindow=true
这三个也是连起来的章节

我发现他们变化的地方是加数变化,具体怎么加的让我摸不着头脑,我不懂web开发,请大家帮我看看,找一下规律,谢谢。

  • 写回答

2条回答 默认 最新

  • 关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    这个问题描述的是B站(哔哩哔哩)漫画网站在切换章节时,网址变化的规律。为了找到这个规律,我们可以分析每个链接的参数以及它们的顺序。

    1. 参数解释:

      • samewindow:即子窗口宽度,也就是当前页面是否只显示一部分内容。
    2. 参数顺序:

      由于我们不知道具体的变化规则,我们只能尝试把问题简化为两个部分:

      a) 在第四个链接中,我们可以看到网址的前缀是mc29329/,这表示它是与Manga相关的。

      b) 在第二个链接中,虽然同样有后缀mc29329/, 然而其前缀不是mc29329/。因此,我们知道这个链接的漫画ID可能位于第三个参数的前面。

      接下来我们可以按这两个线索开始寻找规律:

      • 第一个步骤:将页面中的第一个和最后一个参数相减,如果结果大于0,则说明该页还没有完全显示。

      • 第二步:接着检查第二个链接的第一个参数。如果这个参数是对应的漫画ID,那么我们找到了一些规律。

      例如,在前三个链接中,第四个链接对应的是第536314章,它的第一个参数就是536314。所以,我们可以假设在第四个链接的最后两行分别对应第1563064章和第1568822章。这两个列的第一行可以分别求出相应的漫画ID。

      具体操作如下:

      from urllib.parse import urlparse, parse_qs
      
      url = "https://manga.bilibili.com/m/mc29329/536314?samewindow=true"
      parsed_url = urlparse(url)
      
      page_id = int(parsed_url.path.split('/')[-1])
      
      # 前两个参数可能为对应的章节号
      if page_id % 2 == 1:
          first_param = 0
      else:
          first_param = 1
      
      # 找到对应的漫画ID
      chapter_ids = [int(i[0]) for i in parse_qs(parsed_url.query).get('chapter', [])]
      
      print(f"Chapter IDs: {chapter_ids}")
      

    以上代码首先解析了给定的URL,并将其转换为IPv6地址。然后,它试图获取指定页面的章节号。如果某个章节号是奇数,我们从0开始;如果是偶数,我们从1开始。如果查询的'chapter'参数为空,我们没有找到章节号,所以返回空列表。如果成功找到章节号,我们将它作为一个列表添加到当前页码的后面。最后,输出所有找到的章节号。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月11日
  • 已采纳回答 8月11日
  • 创建了问题 8月11日

悬赏问题

  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏
  • ¥15 以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。