Pythonを使用して、ステーションBで誰もが見るのが大好きなWangBingbingを正確に見つけます

Pythonを使用して、ステーションBで誰もが見るのが大好きなWangBingbingを正確に見つけます

要求する

  • ビデオサイトでビデオを取得する場合、通常、取得したコンテンツをさらにスクリーニングする必要があります。たとえば、ステーションBで特定のキーワードを取得した後、再生ボリューム、弾幕ボリュームが特定の値を超え、リリース時間とビデオ期間が特定の間隔であるビデオのリストを取得したいと考えています。ただし、ステーションBは単純な並べ替えのみを提供し、より高度なフィルタリング機能はありません。したがって、私はPythonを使用してこの関数を自分で実装します。

分析

  1. 検索ページにクロールするにはPythonを使用する必要があります。
  2. 再生量、弾幕の量、リリース時間、ビデオの長さなど、取得したページのビデオ情報を見つけます。
  3. 結果をExcelにエクスポートし、適格なビデオを除外します。

成し遂げる

1.クローラー検索インターフェース

  • ステーションBでWangBingbingを検索するためのURLは次のとおりです。https://search.bilibili.com/all?keyword =%E7%8E%8B%E5%86%B0%E5%86%B0
    ここに画像の説明を挿入します

  • ビデオの長さの場所:
    ここに画像の説明を挿入します

  • 視聴回数、弾幕数、動画の長さの位置:
    ここに画像の説明を挿入します

  • ソースコード:

    from bs4 import BeautifulSoup
    import requests
    
    url = "https://search.bilibili.com/all?keyword=%E7%8E%8B%E5%86%B0%E5%86%B0" #url网址
    headers = {
          
          
        'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
    } # 浏览器身份标识, 伪装成正常访问
    
    f = requests.get(url, headers=headers)  # 获取该网页的html内容
    print(f.status_code) # 打印状态码,200表示正确
    
    soup = BeautifulSoup(f.content, "lxml")  # 用lxml解析器解析该网页的内容
    
    title = soup.find_all('a',{
          
          "class": {
          
          "title"}})  # 视频标题
    time = soup.find_all('span',{
          
          "class": {
          
          "so-imgTag_rb"}}) # 视频时长
    watchnum = soup.find_all('span', {
          
          "class": {
          
          "so-icon watch-num"}})  # 视频观看数
    bullet = soup.find_all('span', {
          
          "class": {
          
          "so-icon hide"}})  # 视频弹幕数
    date = soup.find_all('span', {
          
          "class": {
          
          "so-icon time"}}) # 视频发布日期
    
  • テスト効果:

ここに画像の説明を挿入します

2.結果をExcelにエクスポートします

  • ソースコード:

    import xlwt # 利用xlwt,实现Python对Excel的写入
    
    workbook = xlwt.Workbook(encoding='ascii') # 创建Workbook, 编码格式设置为ascii;
    worksheet = workbook.add_sheet('My Worksheet') # 创建Excel表单, 命名为My Worksheet;
    
    for i in range(len(watchnum)):
        worksheet.write(i , 0, title[i+1].text) # 标题写到第1列, 第一个爬到的text.text是冰冰up主的ID, 
        worksheet.write(i , 1, time[i].text) # 视频时长写到第2列  
        worksheet.write(i , 2, watchnum[i].text) # 观看次数写到第3列
        worksheet.write(i , 3, bullet[i].text) # 弹幕数量写到第4列
        worksheet.write(i , 4, date[i].text) # 发布时间写到第5列
    workbook.save('bingbing.xls')  # 保存文件, 文件名为bingbing.xls
    
  • 書き出されたbingbing.xlsファイルの効果:

ここに画像の説明を挿入します

3.Excelでビデオをフィルタリングする

  • データの前後のスペースを削除するには、最初にtrim()関数を使用する必要があります。
  • 再生回数が100wを超え、弾幕の数が1wを超える動画を除外すると、満足できます。
    ここに画像の説明を挿入します

備考

  • 他のキーワードで動画をクロールする場合は、自分でURLを変更できます。
  • 最初のページのビデオリストをクロールする方法のみを示します。すべてのページのビデオリストが必要な場合は、ループを作成します。2番目のページのURLはhttps://search.bilibili.com/all?keyword=%です。 E7%8E%8B%E5%86%B0%E5%86%B0&page = 2など。

おすすめ

転載: blog.csdn.net/weixin_41754258/article/details/115023052