Desarrollo
Abrimos primero PyCharm en el menú seleccionamos File New Project...Lo nombramos Buscafrase y presionamos create
Instalamos la libreria BeautifulSoup nos vamos al menú File y selccionamos New Projects setup->Setting New Projects...
Seleccionamos Phyton Interpreter y buscamos el nombre del proyecto presionamos en signo de +
Escribimos beautifulsoup y selecionamos beautifulsoup4 presionamos Install Package
Una vez instalada cerramos
Presionamos Apply y luego Ok
De la misma forma instalamos fastapi
Tambiéin necesitamos instalar uvicorn
Instalamos requests
Instalamos lxml
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)