Desarrollo

Abrimos primero PyCharm en el menú seleccionamos File New Project...
phyton project
Lo nombramos Buscafrase y presionamos create
phyton project
Instalamos la libreria BeautifulSoup nos vamos al menú File y selccionamos New Projects setup->Setting New Projects...
phyton project
Seleccionamos Phyton Interpreter y buscamos el nombre del proyecto presionamos en signo de +
phyton project
Escribimos beautifulsoup y selecionamos beautifulsoup4 presionamos Install Package
phyton project
Una vez instalada cerramos
phyton project
Presionamos Apply y luego Ok phyton project
De la misma forma instalamos fastapi
phyton project
Tambiéin necesitamos instalar uvicorn
phyton project
Instalamos requests
phyton project
Instalamos lxml
phyton project
Una vez instaladas nuestras dependencias comenzamos a desarrollar
Creamos el archivo main.py y escribimos lo siguiente:
 
   
  import uvicorn
import requests
from bs4 import BeautifulSoup
from fastapi import FastAPI
from pydantic import BaseModel
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

origins = ["*"]

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)






class Busqueda(BaseModel):
    texto:str
    directorio:str




busqueda={"link":[],"text":[]}





@app.post("/busqueda")
def devolverBusqueda(busca:Busqueda):
    busqueda["link"].clear();
    busqueda["text"].clear();
    if(busca.directorio=="frases"):
        baseUrl = "https://tutosoftware.com/tutoriales/frases/"
        inicio=0
        fin= 58
    if (busca.directorio == "frases2"):
        baseUrl = "https://tutosoftware.com/tutoriales/frases2/"
        inicio = 1
        fin = 59
    if (busca.directorio == "frases3"):
        baseUrl = "https://tutosoftware.com/tutoriales/frases3/"
        inicio = 2
        fin = 60
    if (busca.directorio == "frases4"):
        baseUrl = "https://tutosoftware.com/tutoriales/frases4/"
        busqueda["link"].append(baseUrl)
        inicio = 3
        fin = 61
    if (busca.directorio == "frases5"):
        baseUrl = "https://tutosoftware.com/tutoriales/frases5/"
        inicio = 4
        fin = 62
    if (busca.directorio == "frases6"):
        baseUrl = "https://tutosoftware.com/tutoriales/frases6/"
        inicio = 5
        fin = 39
    result=requests.get(baseUrl)
    content = result.text
    soup=BeautifulSoup(content,'lxml')
    element_list = soup.find_all('li')
    while(inicio<=fin):
        elemento=element_list[inicio]
        relativeUrl=elemento.find('a',href=True)['href']
        completeUrl=baseUrl+relativeUrl
        result=requests.get(completeUrl)
        content=result.text
        soup = BeautifulSoup(content, 'lxml')
        for elementH3 in soup.find_all('h3'):
            if(busca.texto in elementH3.text):
                busqueda["link"].append(completeUrl)
                busqueda["text"].append(elementH3.text)
        for elementH1 in soup.find_all('h1'):
            if (busca.texto in elementH1.text):
                busqueda["link"].append(completeUrl)
                busqueda["text"].append(elementH1.text)
        inicio +=1
    return busqueda


if __name__ == "__main__":
    uvicorn.run(app, host="127.0.0.1", port=8000)
  
  
    
   

Probando