Python - Ayuda con Web scraping

 
Vista:

Ayuda con Web scraping

Publicado por fenix renacer (2 intervenciones) el 22/04/2023 14:22:54
Realizar un web scraping en Python a la siguiente web:
https://hoopshype.com/salaries/players/

Requerimientos:

1. Extraer los nombres de cada uno de los jugadores, y el salario por cada temporada.
2. Cálcular el salario promedio de cada uno de los jugadores.
El programa debe generar un archivo en formato .csv con los datos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con Web scraping

Publicado por rafi (2 intervenciones) el 22/04/2023 19:28:07
mira este ejemplo

import requests
from bs4 import BeautifulSoup
import csv

# Hacemos una solicitud GET a la página web y obtenemos su contenido HTML
url = 'https://www.ipaidabribe.com/reports/all?page=20#gsc.tab=0'
response = requests.get(url)
html = response.content

# Utilizamos BeautifulSoup para analizar el HTML y extraer los datos necesarios
soup = BeautifulSoup(html, 'html.parser')

# Encontramos todas las entradas de la lista de publicaciones
entries = soup.find_all('li', class_='list-group-item')

# Creamos una lista vacía para almacenar los datos
data = []

# Iteramos a través de las primeras 100 publicaciones
for entry in entries[:100]:
# Extraemos los datos necesarios de cada publicación
title = entry.find('a', class_='title').text.strip()
date = entry.find('span', class_='date-display-single')['content'].text.strip()
amount = entry.find('span', class_='amount').text.strip()
views = entry.find('span', class_='views').text.strip()
location = entry.find('span', class_='location').text.strip()
description = entry.find('div', class_='description').text.strip()

# Añadimos los datos a la lista
data.append([title, date, amount, views, location, description])

# Escribimos los datos en un archivo CSV
with open('ipaidabribe.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Title', 'Date', 'Amount', 'Views', 'Location', 'Description'])
for row in data:
writer.writerow(row)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con Web scraping

Publicado por Costero (92 intervenciones) el 22/04/2023 22:37:14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import requests
from bs4 import BeautifulSoup
import re
import pandas as pd
from io import StringIO
 
results = ""
regexp = re.compile(r'^\d+\.')
 
url = 'https://hoopshype.com/salaries/players/'
response = requests.get(url)
html = response.content
 
soup = BeautifulSoup(html, 'html.parser')
 
entries = soup.find_all('td')
 
for entry in entries:
    # print(f"--> {entry} <--")
    if hasattr(entry.find('a'), 'contents'):
        player_name = str(entry.find('a').contents[0].strip())
        # print("--> " + player_name)
        results = f"{results}{player_name},"
    else:
        if len(entry.contents) > 0:
            value = str(entry.contents[0].strip().replace(
                ',', '').replace('$', ''))
            # print("==> " + value)
            if regexp.search(value):
                results = f"{results}\n"
            else:
                results = f"{results}{value},"
        # print("--> " + str(entry))
 
df = pd.read_csv(StringIO(results))
df.drop('Unnamed: 7', inplace=True, axis=1)
 
# calculate average and add a new column
df['mean'] = df.iloc[:, 1:].mean(axis=1)
# print(df)
 
df.to_csv('my_file.csv')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar