Programa Python para rastrear una página web y obtener las palabras más frecuentes

La tarea es contar las palabras más frecuentes, lo que extrae datos de fuentes dinámicas.
Primero, cree un rastreador o raspador web con la ayuda del módulo de requests y un hermoso módulo de sopa , que extraerá datos de las páginas web y los almacenará en una lista. Puede haber algunas palabras o símbolos no deseados (como símbolos especiales, espacios en blanco), que se pueden filtrar para facilitar los recuentos y obtener los resultados deseados. 

Después de contar cada palabra, también podemos contar la mayoría de las palabras frecuentes (digamos 10 o 20).
Módulos y funciones de biblioteca utilizados:
 

requests: le permitirá enviar requests HTTP/1.1 y muchas más. 
beautifulsoup4 : se utiliza para analizar HTML/XML para extraer datos de archivos HTML y XML. 
operator : Exporta un conjunto de funciones eficientes correspondientes a los operadores intrínsecos. 
colecciones : implementa tipos de datos de contenedor de alto rendimiento.

A continuación se muestra una implementación de la idea discutida anteriormente: 
 

Python3

# Python3 program for a word frequency
# counter after crawling/scraping a web-page
import requests
from bs4 import BeautifulSoup
import operator
from collections import Counter
 
'''Function defining the web-crawler/core
spider, which will fetch information from
a given website, and push the contents to
the second  function clean_wordlist()'''
 
 
def start(url):
 
    # empty list to store the contents of
    # the website fetched from our web-crawler
    wordlist = []
    source_code = requests.get(url).text
 
    # BeautifulSoup object which will
    # ping the requested url for data
    soup = BeautifulSoup(source_code, 'html.parser')
 
    # Text in given web-page is stored under
    # the <div> tags with class <entry-content>
    for each_text in soup.findAll('div', {'class': 'entry-content'}):
        content = each_text.text
 
        # use split() to break the sentence into
        # words and convert them into lowercase
        words = content.lower().split()
 
        for each_word in words:
            wordlist.append(each_word)
        clean_wordlist(wordlist)
 
# Function removes any unwanted symbols
 
 
def clean_wordlist(wordlist):
 
    clean_list = []
    for word in wordlist:
        symbols = "!@#$%^&*()_-+={[}]|\;:\"<>?/., "
 
        for i in range(len(symbols)):
            word = word.replace(symbols[i], '')
 
        if len(word) > 0:
            clean_list.append(word)
    create_dictionary(clean_list)
 
# Creates a dictionary containing each word's
# count and top_20 occurring words
 
 
def create_dictionary(clean_list):
    word_count = {}
 
    for word in clean_list:
        if word in word_count:
            word_count[word] += 1
        else:
            word_count[word] = 1
 
    ''' To get the count of each word in
        the crawled page -->
 
    # operator.itemgetter() takes one
    # parameter either 1(denotes keys)
    # or 0 (denotes corresponding values)
 
    for key, value in sorted(word_count.items(),
                    key = operator.itemgetter(1)):
        print ("% s : % s " % (key, value))
 
    <-- '''
 
    c = Counter(word_count)
 
    # returns the most occurring elements
    top = c.most_common(10)
    print(top)
 
 
# Driver code
if __name__ == '__main__':
    url = "https://www.geeksforgeeks.org/programming-language-choose/"
    # starts crawling and prints output
    start(url)
[('to', 10), ('in', 7), ('is', 6), ('language', 6), ('the', 5),
 ('programming', 5), ('a', 5), ('c', 5), ('you', 5), ('of', 4)]

Publicación traducida automáticamente

Artículo escrito por retr0 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *