scrapper sencillo forocochero

Ejemplo sencillo para iniciarse en el mundillo del scraping con b4soup y requests
mail@pastecode.io avatar
unknown
python
2 years ago
2.5 kB
228
Indexable
Never
#librerías necesarias para scraping sencillo
import requests
from bs4 import BeautifulSoup

#introducción de datos por parte del usuario para saber que película buscar
print("Indica de qué película quieres ver la nota media:\n")
movie = input()

#creación de la sesión para que gestione las cookies automáticamente
s = requests.Session()

#creación del header de la siguiente requests emulando al navegador
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'none',
    'Sec-Fetch-User': '?1',
    'If-Modified-Since': 'Tue, 12 Apr 2022 17:21:12 GMT',
    'If-None-Match': '"d4d054ccd58680986b3fce9212a093e4-gzip"',
    'Cache-Control': 'max-age=0',
}

#request a la main page para conseguir las cookies si hicieran falta
s.get('https://www.filmaffinity.com/es/main.html', headers=headers)

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Connection': 'keep-alive',
    'Referer': 'https://www.filmaffinity.com/es/search.php?stext=anime',
    'Upgrade-Insecure-Requests': '1',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-User': '?1',
}

#creación de los params que requiere la request que se deberán pasar
params = {
    'stext': movie,
}

# request y extracción de la primera URL que devuelve filmaffinity
response = s.get('https://www.filmaffinity.com/es/search.php', headers=headers, params=params)

soup = BeautifulSoup(response.text, 'html.parser')

movieLink = soup.find('div', {'class': 'mc-poster'}).find('a').get('href')

#requesta a la url extraída para recoger el detalle de la película
response = s.get(movieLink, headers=headers)

soup = BeautifulSoup(response.text, 'html.parser')

#recogida de la nota media según tags analizados previamente
avgRating = soup.find('div', {'id': 'movie-rat-avg'}).text

#presentación por pantalla de datos recogidos
print(f'\nLa nota media de {movie.upper()} es {avgRating}')