爬虫爬取B站某up是否含有另一些up的程序

# 导入所需的库
import requests
import json
import time

# 定义一个函数,根据up主的uid和页码,获取粉丝列表的url
def get_fans_url(uid, page):
    base_url = "https://api.bilibili.com/x/relation/followers?vmid={}&pn={}&ps=50&order=desc&jsonp=jsonp"
    return base_url.format(uid, page)

# 定义一个函数,根据url,发送请求并解析响应,返回粉丝列表
def get_fans_list(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36"
    }
    response = requests.get(url, headers=headers)
    data = json.loads(response.text)
    fans_list = data["data"]["list"]
    return fans_list

# 定义一个函数,根据粉丝列表,检查是否有指定的粉丝昵称
def check_fan_name(fans_list, fan_name):
    for fan in fans_list:
        if fan["uname"] == fan_name:
            return True
    return False

# 定义一个函数,根据up主的uid和粉丝昵称,爬取粉丝数据并检测是否有该粉丝
def crawl_and_check(uid, fan_name):
    # 初始化页码和标志位
    page = 1
    flag = False
    # 循环爬取每一页的粉丝列表,直到找到指定的粉丝或者没有更多数据
    while True:
        # 获取当前页的url
        url = get_fans_url(uid, page)
        # 获取当前页的粉丝列表
        fans_list = get_fans_list(url)
        # 如果粉丝列表为空,说明没有更多数据,跳出循环
        if not fans_list:
            break
        # 检查当前页的粉丝列表中是否有指定的粉丝昵称
        flag = check_fan_name(fans_list, fan_name)
        # 如果找到了指定的粉丝,跳出循环
        if flag:
            break
        # 否则,页码加一,继续下一页的爬取
        else:
            page += 1
            # 设置一个延时,防止请求过快被封禁
            time.sleep(1)
    # 返回标志位,表示是否找到了指定的粉丝
    return flag

# 定义up主的uid和要检测的粉丝昵称
uid = 19873195
fan_name = "小毛毛熊"

# 调用函数,爬取粉丝数据并检测是否有该粉丝
result = crawl_and_check(uid, fan_name)

# 打印结果
if result:
    print("恭喜!这个up主的粉丝里有{}!".format(fan_name))
else:
    print("抱歉!这个up主的粉丝里没有{}!".format(fan_name))

format是一个Python的字符串格式化函数,它可以将指定的值插入到字符串的占位符中,从而生成新的字符串。format函数的基本语法是通过{}和:来代替以前的%。format函数可以接受不限个参数,位置可以不按顺序。例如:

```python
# 使用位置参数
>>> "Hello, {0} and {1}".format("Alice", "Bob")
'Hello, Alice and Bob'

# 使用关键字参数
>>> "Hello, {name1} and {name2}".format(name1="Alice", name2="Bob")
'Hello, Alice and Bob'

# 使用混合参数
>>> "Hello, {0} and {name}".format("Alice", name="Bob")
'Hello, Alice and Bob'
```

format函数还可以对值进行格式化,例如保留小数点后几位,使用逗号分隔千位,使用不同的进制表示数字,使用百分比或指数记法等。您可以在占位符中使用:后面跟上格式化类型来实现。例如:

```python
# 保留小数点后两位
>>> "{:.2f}".format(3.1415926)
'3.14'

# 以逗号分隔的数字格式
>>> "{:,}".format(1000000)
'1,000,000'

# 百分比格式
>>> "{:.2%}".format(0.25)
'25.00%'

# 指数记法
>>> "{:.2e}".format(1000000000)
'1.00e+09'
```format函数的用途很多,您可以用它来生成各种复杂的字符串,例如日志信息,报表数据,用户界面等。

base_url是一个英文单词,意思是“基本网址”或“基础网址”。它指的是一个网址的最主要的部分,通常包括协议(如http或https)、域名(如bilibili.com或google.com)和端口(如80或443)。例如,这个网址的base_url是https://docs.python.org。base_url可以用来构造完整的网址,比如在base_url后面加上路径、参数、查询或片段。在Python中,有一个模块叫urllib.parse,它提供了一些函数来解析和组合网址,其中就有一个函数叫urlparse,可以用来从一个网址中提取出base_url。您可以参考这篇文章或这个问题来了解更多关于base_url和Python的用法。

您好,我刚才给您的代码里的base_url是一个变量,它的值是一个字符串,表示一个网址的最主要的部分。我用这个变量来构造完整的网址,根据up主的uid和页码,获取粉丝列表的url。例如,如果up主的uid是19873195,页码是1,那么粉丝列表的url就是`https://api.bilibili.com/x/relation/followers?vmid=19873195&pn=1&ps=50&order=desc&jsonp=jsonp`。这个url就是我用base_url和其他参数拼接而成的。您可以看到,base_url是这个url的前面一部分,即`https://api.bilibili.com/x/relation/followers`。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值