[python] 在哔哩哔哩中搜索视频

in Python with 0 comment

在哔哩哔哩中搜索视频

由于我的视频近期刚刚上传到哔哩哔哩上,我时刻关注这我视频的排名,关注着使用搜索能不能搜到我这个视频,但是又不知道在哪一页会出现,所以就需要写一个脚本每一页每一页的筛选一下

所以写了一个小脚本,代码如下

from sys import argv
import requests
from bs4 import BeautifulSoup

# 搜索的api为
# keyword为搜索关键字,page为搜索页数
SEARCH_URL = "https://search.bilibili.com/all?keyword={}&page={}"
def get_page_li_list(soup):
    """
        获取全部的li标签
    """
    li_list = soup.find_all("li", class_="video matrix")
    return li_list
def search_page(name="python", page_num=1):
    """
        负责搜索相应的页面
    """
    r = requests.get(SEARCH_URL.format(name, page_num))
    soup = BeautifulSoup(r.text, "html.parser")
    return soup
def my_replace(text):
    """
        删减掉文本内容中的空格和换行
    """
    text = str(text)
    text = text.replace(" ", "").replace("\n", "")

    return text
def search_li(li_list, page_num):
    for li in li_list:
        """
            循环对每一个li标签进行操作
        """
        title = my_replace(li.a["title"])
        if title == None:
            print("[-] {}页内容出错!".format(page_num))
        if argv[2] in title:
            print("[+] {}页找到内容!".format(page_num))
            return page_num
    return 0

if __name__ == "__main__":
    find_name = argv[1]
    for num in range(1, 51):
        # 获取html 转为soup对象
        soup = search_page(find_name, num)
        # 获取所有li标签
        li_list = get_page_li_list(soup)
        search_li(li_list, num)
        if num == 0:
            print("[-] {}页未找到!".format[num], end="\r")
        print("[*] 正在查询第{}页".format(num), end="\r")
Responses