Nauč se Python > Kurzy > Python a jeho knihovny > Scraping > Web Scraping

Web Scraping – Řešení [6]

import time

import requests
from bs4 import BeautifulSoup


URL = "https://en.wikipedia.org"
START = "/wiki/Special:Random"


def odstran_zavorky(text):
    hloubka = 0
    v_tagu = False
    vysledek = ""
    for znak in text:
        if v_tagu:
            vysledek += znak
            if znak == ">":
                v_tagu = False
        else:
            if znak == "(":
                hloubka += 1
            elif znak == ")":
                hloubka -= 1
            elif hloubka == 0:
                vysledek += znak
                if znak == "<":
                    v_tagu = True

    return vysledek


def najdi_titulek(soup):
    return soup.find(id="firstHeading").text


def najdi_odkaz(soup):
    hlavni_text = soup.find(class_="mw-parser-output")
    for odstavec in hlavni_text.find_all("p"):
        html = odstran_zavorky(str(odstavec))
        odstavec = BeautifulSoup(html, "html.parser")
        for odkaz in odstavec.find_all("a"):
            return odkaz.get("href")


def stahuj(stranka):
    navstivene = set()
    while True:
        if stranka in navstivene:
            break
        navstivene.add(stranka)

        odpoved = requests.get(URL + stranka)
        odpoved.raise_for_status()

        soup = BeautifulSoup(odpoved.text, "html.parser")
        print(najdi_titulek(soup))

        stranka = najdi_odkaz(soup)
        if not stranka:
            break

        time.sleep(1)


if __name__ == "__main__":
    stahuj(START)

Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.