🌐

Scriptak eta kode-adibideak (PHP eta Python)

Dokumentatutako kode erabilgarria. Adibide bakoitzak azalpena, norentzat den eta zein arazo konpontzen duen barne hartzen ditu.

💡 Nola erabili adibide hauek: Web-zerbitzari bat behar duzu (lokalean probatzen baduzu, tokiko zerbitzari bat behar duzu, Xampp edo Docker), zerbitzariak PHP 7.4 (edo handiagoa) bertsioa izan behar du. Irakurri azalpen-blokea kodea kopiatu aurretik. Egokitu aldagaiak (kredentzialak, taula-izenak, bideak) zure proiektura.
💡 Nola erabili adibide hauek: Ziurtatu Python-eko osagarri guztiak dituzula. Python komandoak exekutatzeko kontsola. Fitxategiaren goiburuan aipatutako liburutegi guztiak.

Web Scraping (transfermarkt.es)

Norentzat

Futbolaren munduko edozein garatzaile.

Zein arazo konpontzen duen

Futbol talde baten jokalarien zerrenda formatu egituratuan lortzea.


# Listado de Librerias, asegurate de instalar todos estos paquetes
import datetime
from datetime import datetime
from bs4 import BeautifulSoup
import requests
import time
import datetime
import json
# Obtener la fecha de hoy
today = datetime.datetime.today()
# Extraer día y mes de la fecha de hoy
day_today = today.day
month_today = today.month
# Extraer el año de la fecha de hoy
current_year = datetime.datetime.now().year
# El año desde donde vamos a iniciar a obtener
# Colocamos el año hasta el que queremos obtener
current_year = datetime.datetime.now().year
current_year = 2020
# Generamos la lista de los años de los que queremos obtener
years_list = list(range(current_year, 1999, -1))
teams = {
  '131': 'fc-barcelona'
}
all_players={}
# Defininimos la URL a obtener datos sustituyendo  el ID de equipo y el nombre en la URL 
# Lo sacaremos de la URL
# TEAM_ID
# TEAM_NAME
# BASE_URL='https://www.transfermarkt.es/fc-barcelona/kader/verein/131/saison_id/2025/plus/1
# BASE_URL='http://www.transfermarkt.es/'+TEAM_NAME+'/kader/verein/'+TEAM_ID+'/plus/1/galerie/0?saison_id='

for team in teams:
  team_name=teams[team]
  all_players[team_name] = []
  BASE_URL='https://www.transfermarkt.es/'+teams[team]+'/kader/verein/'+team+'/saison_id/'
  # Vamos sacando la Plantilla año tras año
  urls = [f"{BASE_URL}{year}/plus/1" for year in years_list]
  # Configuramos las cabeceras del navegador
  headers = {
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
  }

  all_data_team = []
  for url in urls:
    data = []
    # Para evitar banneos entre temporada y temporada esperamos 20 segundos
    time.sleep(20)
    TRANSFERMARKT_URL = url
    print(TRANSFERMARKT_URL)
    raw_html=None
    html=None
    quotes_body=None
    quotes_tr=None
    rows=None
    response = None
    response = requests.get(TRANSFERMARKT_URL, headers=headers)
    requests.session().close()
    # Analizar sintácticamente el texto fuente HTML guardado en raw_html
    status_code=response.status_code
    if status_code == 200:
      raw_html=response.text
      html = BeautifulSoup(response.text, 'html.parser')
      quotes_html = html.find_all('table', class_="item")
      if not (bool(quotes_html)):
        continue
      quotes_body = html.find_all('tbody')[1]
      quotes_tr = quotes_body.find_all('tr', class_=lambda x: x in ['even', 'odd'])
      count_players=0
      for row in quotes_tr:
        player_data = row.find_all('img', class_=lambda x: x in ['bilderrahmen-fixed lazy lazy'])
        player_data_1 = row.find_all('td', class_=lambda x: x in ['zentriert'])
        birthday_str=player_data_1[1].text[:10]
        
        name = player_data[0].get('title')
        img = player_data[0].get('data-src')        

        all_data_team.append([name,img,birthday_str])
        count_players+=1

# Ya tenemos as plantillas de todas las temporadas y ya tenemos todos los jugadores en un array
  print(all_data_team)
        
Zalantzarik? Idatzi
🔌

REST API bat kontsumitu

Norentzat

Kanpoko zerbitzuetara konektatu eta datuak bistaratu behar dituzten garatzaileak.

Zein arazo konpontzen duen

HTTP eskaera cURL-rekin, errore-kudeaketa, JSON deskodetzea.

<?php
// Ejemplo: consumir API pública de envío y recepción de mensajes por telegram

    $url="https://api.paginaweb.es"
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 15,
        CURLOPT_CUSTOMREQUEST  => $method,
        CURLOPT_HTTPHEADER     => array_merge([
            "Accept: application/json",
            "Content-Type: application/json",
        ], $headers),
        CURLOPT_SSL_VERIFYPEER => true,
    ]);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error    = curl_error($ch);
    curl_close($ch);

    if ($error) {
        throw new RuntimeException("cURL error: $error");
    }
    if ($httpCode !== 200) {
        throw new RuntimeException("HTTP $httpCode al llamar $url");
    }

    $data = json_decode($response, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new RuntimeException("JSON inválido: " . json_last_error_msg());
    }

     print_r($data);
Zalantzarik? Idatzi

Script zehatz bat behar duzu?

Automatizazio- edo integrazio-arazo zehatzik baduzu PHPrekin, konta iezadazu. Baliteke lehenago konpondu izana edo elkarrekin egin ahal izatea.

Kontatu zure kasua