Heim  >  Artikel  >  Backend-Entwicklung  >  Bringen Sie Ihnen Schritt für Schritt bei, wie Sie den Python-Webcrawler verwenden, um den Videoauswahlinhalt von Bilibili abzurufen (Quellcode beigefügt).

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie den Python-Webcrawler verwenden, um den Videoauswahlinhalt von Bilibili abzurufen (Quellcode beigefügt).

Go语言进阶学习
Go语言进阶学习nach vorne
2023-07-25 14:25:041553Durchsuche

1. Hintergrundeinführung

Wenn es um Bilibili geht, glaube ich, dass viele Freunde wie ich die Webcrawler-Technologie verwenden möchten, um das Video von Bilibili zu erhalten ist eigentlich gar nicht so einfach zu bekommen, ab an Station B um das Video zu bekommen, wurde schon einmal durch die you-get-Bibliothek vorgestellt, interessierte Freunde können das lesen Artikel:You-Get ist so stark! .经 经

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie den Python-Webcrawler verwenden, um den Videoauswahlinhalt von Bilibili abzurufen (Quellcode beigefügt).

🎜🎜 🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜, Freunde, die oft auf Station B lernen, treffen oft auf einige Blogger, die Dutzende, sogar Hunderte von Videos serialisieren, besonders diese. Programmierung Sprache, Kurse, Werkzeugnutzung usw. Tutorial, die Auswahlreihe wird angezeigt, wie in der Abbildung unten gezeigt. 🎜🎜🎜🎜🎜

Natürlichdiese Auswahlfeldersind auch mit bloßem Auge zu erkennen. Nur Wenn Sie es über ein Programm implementieren, ist es möglicherweise nicht so einfach, wie Sie denken. Das Ziel dieses Artikels besteht also darin, eine Videoauswahl mithilfe der Python-Webcrawler-Technologie und basierend auf der Selenium-Bibliothek zu erhalten.


2. Spezifische Implementierung

Die Bibliothek, die wir in diesem Artikel verwenden, ist Selenium, eine Bibliothek, die zur Simulation der Benutzeranmeldung verwendet wird, obwohl sie sich im Bereich der Webcrawler langsam anfühlt Wird immer noch häufig verwendet und hat sich bewährt, um die Anmeldung zu simulieren und Daten abzurufen. Nachfolgend finden Sie den gesamten Code zur Implementierung der Videoauswahlsammlung. Sie können ihn gerne selbst üben.

# coding: utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait


class Item:
    page_num = ""
    part = ""
    duration = ""


    def __init__(self, page_num, part, duration):
        self.page_num = page_num
        self.part = part
        self.duration = duration


    def get_second(self):
        str_list = self.duration.split(":")
        sum = 0
        for i, item in enumerate(str_list):
            sum += pow(60, len(str_list) - i - 1) * int(item)


        return sum


def get_bilili_page_items(url):
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')  # 设置无界面
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    # options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2,
    #                                           "profile.managed_default_content_settings.flash": 0})


    browser = webdriver.Chrome(options=options)
    # browser = webdriver.PhantomJS()
    print("正在打开网页...")
    browser.get(url)


    print("等待网页响应...")
    # 需要等一下,直到页面加载完成
    wait = WebDriverWait(browser, 10)
    wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@class="list-box"]/li/a')))


    print("正在获取网页数据...")
    list = browser.find_elements_by_xpath('//*[@class="list-box"]/li')
    # print(list)
    itemList = []


    second_sum = 0


    # 2.循环遍历出每一条搜索结果的标题
    for t in list:
        # print("t text:",t.text)
        element = t.find_element_by_tag_name('a')
        # print("a text:",element.text)
        arr = element.text.split('\n')
        print(" ".join(arr))
        item = Item(arr[0], arr[1], arr[2])
        second_sum += item.get_second()
        itemList.append(item)


    print("总数量:", len(itemList))
    # browser.page_source


    print("总时长/分钟:", round(second_sum / 60, 2))
    print("总时长/小时:", round(second_sum / 3600.0, 2))


    browser.close()


    return itemList




get_bilili_page_items("https://www.bilibili.com/video/BV1Eb411u7Fw")

Der hier verwendete Selektor ist xpath, und das Videobeispiel ist die Tongji-Version „Advanced Mathematics“ des vollständigen Lehrvideos (Teacher Song Hao) von Station B. Wenn Sie es sich schnappen möchten Andere Videos Zur Auswahl müssen Sie lediglich den URL-Link in der letzten Zeile des obigen Codes ändern.


三、常见问题

    在运行过程中小伙伴们应该会经常遇到这个问题,如下图所示。

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie den Python-Webcrawler verwenden, um den Videoauswahlinhalt von Bilibili abzurufen (Quellcode beigefügt).

    这个是因为谷歌驱动版本问题导致的,只需要根据提示,去下载对应的驱动版本即可,驱动下载链接:

https://chromedriver.storage.googleapis.com/index.html

Bringen Sie Ihnen Schritt für Schritt bei, wie Sie den Python-Webcrawler verwenden, um den Videoauswahlinhalt von Bilibili abzurufen (Quellcode beigefügt).

Das obige ist der detaillierte Inhalt vonBringen Sie Ihnen Schritt für Schritt bei, wie Sie den Python-Webcrawler verwenden, um den Videoauswahlinhalt von Bilibili abzurufen (Quellcode beigefügt).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:Go语言进阶学习. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen