es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Contar la frecuencia de una palabra específica en una URL específica – Python

Espero obtener un contador de cuántas veces aparece una palabra específica en una URL dada. Actualmente tengo una manera de hacer esto para un pequeño conjunto de URL y una sola palabra:

import requests
from bs4 import BeautifulSoup

url_list = ["https://www.example.org/","https://www.example.com/"]

# la_palabra = input()
la_palabra = 'Python'

total_palabras = []
for url in url_list:
    r = requests.get(url, allow_redirects=False)
    soup = BeautifulSoup(r.content.lower(), 'lxml')
    palabras = soup.find_all(text=lambda text: text and la_palabra.lower() in text)
    count = len(palabras)
    palabras_lista = [ ele.strip() for ele in palabras ]
    for palabra in palabras:
        total_palabras.append(palabra.strip())

    print('\nUrl: {}\ncontiene {} veces la palabra: {}'.format(url, count, la_palabra))
    print(palabras_lista)

#print(total_palabras)
total_count = len(total_palabras)

Sin embargo, espero poder hacer esto para un conjunto mapeado de palabras y sus respectivas URL, como se muestra en el siguiente data frame.

Palabra Objetivo URL Objetivo
palabra1 www.example.com/tema-1/
palabra2 www.example.com/tema-2/

Idealmente, la salida me daría una nueva columna con el conteo de cuántas veces aparece la palabra en su URL asociada. Por ejemplo, cuántas veces aparece la palabra ‘palabra1’ en ‘www.example.com/tema-1/’.

Cualquier ayuda es muy apreciada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el resultado deseado, puedes modificar tu código existente para recorrer las filas de tu dataframe y contar las palabras para cada combinación de palabra y URL. Aquí tienes un ejemplo de fragmento de código:

    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    
    url_list = ["https://www.example.org/","https://www.example.com/"]
    df = pd.DataFrame({'Palabra Objetivo': ['palabra1', 'palabra2'],
                       'URL Objetivo': ['www.example.com/tema-1/', 'www.example.com/tema-2/']})
    
    # Crea una nueva columna para almacenar el recuento de palabras para cada combinación de palabra y URL
    df['Recuento de Palabras'] = 0
    
    for i, fila in df.iterrows(): # recorre cada fila en el dataframe
        palabra = fila['Palabra Objetivo']
        url = fila['URL Objetivo']
        r = requests.get(url, allow_redirects=False)
        soup = BeautifulSoup(r.content.lower(), 'lxml')
        palabras = soup.find_all(text=lambda text: text and palabra.lower() in text)
        count = len(palabras)
        df.at[i, 'Recuento de Palabras'] = count # almacena el recuento de palabras en la nueva columna
    
    print(df)
    

    Este código te dará como resultado un dataframe con tres columnas: Palabra Objetivo, URL Objetivo y Recuento de Palabras. La columna Recuento de Palabras contendrá la cantidad de veces que aparece cada palabra en su URL asociada.

Comments are closed.