Web Scraping – Řešení [7]
import time
import requests
from bs4 import BeautifulSoup
URL = "https://en.wikipedia.org"
START = "/wiki/Special:Random"
# Česká wikipedie:
# URL = "https://cs.wikipedia.org"
# START = "/wiki/Speciální:Náhodná_stránka"
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"):
href = odkaz.get("href")
if href.startswith("/wiki/"):
return href
def stahuj(stranka):
navstivene = set()
while True:
if stranka in navstivene:
break
navstivene.add(stranka)
odpoved = requests.get(f"{URL}{stranka}")
odpoved.raise_for_status()
soup = BeautifulSoup(odpoved.text, "html.parser")
print(najdi_titulek(soup))
stranka = najdi_odkaz(soup)
if not stranka:
break
Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.