asumiendo que previamente tienen instalado python3 en su equipo... comencemos
Creamos un entorno virtual (virtual enviroment)
en consola(terminal):
python3 -m venv nombre_carpeta
Activamos el entorno virtual (virtual enviroment)
source nombre_carpeta/bin/activate
Instalamos los siguientes modulos:
pip install requests
pip install pandas
pip install bs4
pip install python-firebase
TIP:
Para chequear los modulos
pip list
TIP2:
En caso de querer salir del entorno virtual (virtual enviroment)
deactivate
Ahora si, empecemos...
1) Necesitaremos crear un archivo con extension .py (ej. miarchivo.py)
vim miarchivo.py
2) importamos los modulos que necesitamos
from bs4 import BeautifulSoup
import requests
import html
import json
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
3) Para poder acceder a la base de datos de firebase necesitaremos una llave privada
cred = credentials.Certificate("./nombre_de_su_llave.json")
4) Realizamos la conexion con la base de datos de firebase
firebase_admin.initialize_app(cred, {
'databaseURL': 'https://url_de_su_base_de_datos'
})
5) Creamos una referencia en la Base de datos
ref = db.reference('Nombre_de_su_referencia')
6) Comenzamos con el webscraping ------
6.1) Agregamos los headers
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
6.2) Creamos una lista de urls (en caso de tener solo uno, puede simplemente declararla ) y dos listas mas que tendran los titulos y la informacion de la pagina
# Lists----------------------------------------
urls = ["https://url1.com","https://url2.com","https://url3.com"]
title_list = []
page_info = []
6.4) Creamos un Diccionario de datos
# Dictionary-------------------------------------
about_info = {}
6.5) Debido a que en este caso vamos a utilizar varias urls creamos un for loop
for url in urls:
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
6.6) Imprimimos la respuesta del servidor.
# testing the conection------------
print(page.status_code) # if answer=200 ->ok
6.7) obteniendo la informacion del div
con la clase class_="my-class"
info = soup.find_all('div', class_="my-class")
7) Como obtuvimoms muchos objetos del div
vamos a filtrar solo los de la etiqueta h2
title = info[0].find('h2') # getting the data of the h2 tags
8) Como obtuvimoms muchos objetos del div
vamos a filtrar solo los de la etiqueta p
paragraph = info[0].find_all('p') # getting the data of the p tags
9) Utilizamos un list comprehension para almacenar al informacion obtenida
# list comprehension-----------------------------------
page_info = [item.text for item in paragraph]
about_info[title.text] = page_info
9.1) [Opcional] Imprimimos el Diccionario
print(about_info)
10) Enviamos el Diccionario a Firebase
info_ref = ref.child('info') #Creating a child called "info"
info_ref.set(about_info) #Sending info to Firebase