Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler

Was du machen willst

Video Nr. 1, [Video Nr. 2](https://www.youtube.com/watch?v=up5Xn = PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_) und Video Nr. 3 Ich möchte, dass Sie zur angegebenen Site gehen und die in jedem Überschriftenlink verwendeten Wörter in absteigender Reihenfolge der Häufigkeit anzeigen.

Video # 1

import requests
from bs4 import BeautifulSoup
import operator


def start(url):
	word_list = []
	source_code = requests.get(url).text #gonna connect to the link and use it as plain text
	soup = BeautifulSoup(source_code, 'html.parser')
	for post_text in soup.findAll('a', {'class': 'title text-semibold'}): #go through all the contents
		content = post_text.string #.string = only get the texts thats inside "soup"
		words = content.lower().split()
		for each_word in words:
			print(each_word)
			word_list.append(each_word)
		

start("https://www.thenewboston.com/forum/")
  1. Erstellen Sie eine word_list-Liste (um alle Wörter zu werfen, die später hier aufgelöst wurden)
  2. Gehen Sie zur Site und speichern Sie den HTML-Text in source_code
  3. Verwenden Sie schöne Suppe zum Stylen
  4. Verwenden Sie den CSS-Selektor, um die erforderlichen Teile einzugrenzen und nur den darin enthaltenen Text in "Inhalt" zu extrahieren.
  5. Machen Sie den Inhalt von "Inhalt" alle niedriger und trennen Sie sie für jedes Leerzeichen und werfen Sie sie in "Wörter"
  6. Verwenden Sie die Schleife, um jedes Wort in "words" in "word_list" zu werfen Ich wollte sagen.

Ausgabe

dictionary
print
order
permanent
display
of
content
rendering
problems
whenever
i
start
the
android
studio
two
beginner
python
courses?
vector
about
double
buffering
arduino
code
asterisk
before
a
pointer
can
you
provide
me
the
arduino
code
for
eye
blinking
sensor(ir
sensor)
for
accidental
prevention.
can't
import
images
in
android
studio
can't
install
intel
haxm
free
internet
javascript
interpreter
lambda
function
my
funny
litlte
program
navigation
drawer
activity
not
able
to
find
the
problem
need
help
org.apache.http.client.httpclient
deprecated
question
about
themes
someone
share
a
link
to
source
codes??
source
code
?
which
all
views
should
be
turned
on?
x86
emulation
error
error
when
trying
to
build
and
run.
computer
doesn't
support
virtualization.
web
development
using
html
java
game
about
getting
user
input
eclipse
doesn't
recognise
my
imports
other
ways
of
styling

Video # 2

import requests
from bs4 import BeautifulSoup
import operator


def start(url):
	word_list = []
	source_code = requests.get(url).text #gonna connect to the link and use it as plain text
	soup = BeautifulSoup(source_code, 'html.parser')
	for post_text in soup.findAll('a', {'class': 'title text-semibold'}): #go through all the contents
		content = post_text.string #.string = only get the texts thats inside "soup"
		words = content.lower().split()
		for each_word in words:
			word_list.append(each_word)
	clean_up_list(word_list)

def clean_up_list(word_list):
	clean_word_list = []
	for word in word_list:
		symbols = "!@#$%^&*()_+{}:\"<>?,./;'[]-="
		for i in range(0, len(symbols)): 
			word = word.replace(symbols[i], "") #and replace it with nothing (=delete) if finds any symbols
		if len(word) > 0: #allows it to take only the actual clean words
			#print(word)
			clean_word_list.append(word)

start("https://www.thenewboston.com/forum/")

Die start Funktion hat sogar die Zeichen genommen und sie in die word_list eingefügt, aber dieses Mal werden wir eine Funktion erstellen, um die abgerufenen Wörter zu sortieren. Zum Beispiel den Umgang mit anderen Symbolen als Wörtern und Buchstaben mit nur Leerzeichen.

  1. Erstellen Sie zuerst clean_word_list
  2. word_list, die das Wort enthält, das von der start-Funktion for loop abgerufen wurde, die jedes Wort (= Wort) schleift
  3. Bestimmen Sie, ob jedes "Wort" für jedes "Symbol" übereinstimmen soll. Wenn ja, ersetzen Sie es durch ein Leerzeichen
  4. Wenn die Länge von word größer als 0 ist (= nicht nur ein Leerzeichen), fügen Sie es zu clean_word_list hinzu

Ausgabe

variables
in
enum
dictionary
print
order
permanent
display
of
content
rendering
problems
whenever
i
start
the
android
studio
two
beginner
python
courses
vector
about
double
buffering
arduino
code
asterisk
before
a
pointer
can
you
provide
me
the
arduino
code
for
eye
blinking
sensorir
sensor
for
accidental
prevention
cant
import
images
in
android
studio
cant
install
intel
haxm
free
internet
javascript
interpreter
lambda
function
my
funny
litlte
program
navigation
drawer
activity
not
able
to
find
the
problem
need
help
orgapachehttpclienthttpclient
deprecated
question
about
themes
someone
share
a
link
to
source
codes
source
code
which
all
views
should
be
turned
on
x86
emulation
error
error
when
trying
to
build
and
run
computer
doesnt
support
virtualization
web
development
using
html
java
game
about
getting
user
input
eclipse
doesnt
recognise
my
imports

Video # 3

import requests
from bs4 import BeautifulSoup
import operator #allows you to work with build-in data types in python


def start(url):
	word_list = []
	source_code = requests.get(url).text #gonna connect to the link and use it as plain text
	soup = BeautifulSoup(source_code, 'html.parser')
	for post_text in soup.findAll('a', {'class': 'title text-semibold'}): #go through all the contents
		content = post_text.string #.string = only get the texts thats inside "soup"
		words = content.lower().split()
		for each_word in words:
			word_list.append(each_word)
	clean_up_list(word_list)

def clean_up_list(word_list):
	clean_word_list = []
	for word in word_list:
		symbols = "!@#$%^&*()_+{}:\"<>?,./;'[]-="
		for i in range(0, len(symbols)): 
			word = word.replace(symbols[i], "") #and replace it with nothing (=delete) if finds any symbols
		if len(word) > 0: #allows it to take only the actual clean words
			print(word)
			clean_word_list.append(word)
	create_dictionary(clean_word_list)

def create_dictionary(clean_word_list):
	word_count = {}
	for word in clean_word_list:
		if word in word_count:
			word_count[word] += 1 # word_count[word]Die Nummer wird um eins erhöht
		else:
			word_count[word] = 1
	for key, value in sorted(word_count.items(), key = operator.itemgetter(1)):
	#go to the dic. and get an item from the dic.
	# key = 0 and value = 1, so if you wanted to sort by key then operator.itemgetter(0) = alphabetical order
	
		print(key, value)

start("https://www.thenewboston.com/forum/")

Erstellen Sie eine Funktion "create_dictionary", mit der ein Wort als "Schlüssel" mit der Häufigkeit der Verwendung des Wortes als "Wert" gespeichert werden kann. Wenn Sie es bereits mit der if-Syntax haben, erstellen Sie eine neue, wenn Sie keinen Punkt hinzufügen möchten. Verwenden Sie "für Schlüssel, Wert in sortiert (word_count.items (), key = operator.itemgetter (1))", um Wörter aus dem "Wörterbuch" zu ziehen und die Wörter in absteigender Reihenfolge von "Wert" zu sortieren.

Ausgabe

variables
in
enum
dictionary
print
order
permanent
display
of
content
rendering
problems
whenever
i
start
the
android
studio
two
beginner
python
courses
vector
about
double
buffering
arduino
code
asterisk
before
a
pointer
can
you
provide
me
the
arduino
code
for
eye
blinking
sensorir
sensor
for
accidental
prevention
cant
import
images
in
android
studio
cant
install
intel
haxm
free
internet
javascript
interpreter
lambda
function
my
funny
litlte
program
navigation
drawer
activity
not
able
to
find
the
problem
need
help
orgapachehttpclienthttpclient
deprecated
question
about
themes
someone
share
a
link
to
source
codes
source
code
which
all
views
should
be
turned
on
x86
emulation
error
error
when
trying
to
build
and
run
computer
doesnt
support
virtualization
web
development
using
html
java
game
about
getting
user
input
eclipse
doesnt
recognise
my
imports
courses 1
images 1
order 1
litlte 1
i 1
link 1
variables 1
input 1
when 1
someone 1
pointer 1
vector 1
x86 1
buffering 1
on 1
of 1
blinking 1
recognise 1
beginner 1
enum 1
javascript 1
should 1
need 1
eclipse 1
computer 1
dictionary 1
virtualization 1
navigation 1
can 1
permanent 1
provide 1
prevention 1
print 1
function 1
game 1
internet 1
html 1
question 1
rendering 1
deprecated 1
you 1
turned 1
orgapachehttpclienthttpclient 1
find 1
haxm 1
activity 1
asterisk 1
using 1
which 1
intel 1
double 1
all 1
support 1
problem 1
two 1
funny 1
whenever 1
display 1
problems 1
sensor 1
accidental 1
java 1
interpreter 1
me 1
eye 1
help 1
before 1
imports 1
getting 1
development 1
trying 1
import 1
not 1
drawer 1
install 1
codes 1
views 1
be 1
user 1
share 1
themes 1
web 1
content 1
able 1
program 1
build 1
sensorir 1
python 1
emulation 1
and 1
start 1
run 1
lambda 1
free 1
in 2
for 2
android 2
arduino 2
cant 2
error 2
doesnt 2
studio 2
a 2
my 2
source 2
the 3
to 3
code 3
about 3

Nachtrag:

Ich erhielt von @lazykyama den Rat, dass "Wenn Sie das Modul" Zähler "von" Sammlungen "verwenden, wird die in Video 3 erstellte Funktion fast nie benötigt", und entschied mich daher, sie sofort zu implementieren.

import requests
from bs4 import BeautifulSoup
import operator #allows you to work with build-in data types in python
from collections import Counter


def start(url):
	word_list = []
	source_code = requests.get(url).text #gonna connect to the link and use it as plain text
	soup = BeautifulSoup(source_code, 'html.parser')
	for post_text in soup.findAll('a', {'class': 'title text-semibold'}): #go through all the contents
		content = post_text.string #.string = only get the texts thats inside "soup"
		words = content.lower().split()
		for each_word in words:
			word_list.append(each_word)
	clean_up_list(word_list)

def clean_up_list(word_list):
	clean_word_list = []
	for word in word_list:
		symbols = "!@#$%^&*()_+{}:\"<>?,./;'[]-="
		for i in range(0, len(symbols)): 
			word = word.replace(symbols[i], "") #and replace it with nothing (=delete) if finds any symbols
		if len(word) > 0: #allows it to take only the actual clean words
			#print(word)
			clean_word_list.append(word)

	counts = Counter(clean_word_list)
	print(counts)

start("https://www.thenewboston.com/forum/")

Hier ist die Ausgabe:

Counter({'the': 9, 'to': 5, 'i': 5, 'with': 5, 'program': 3, 'image': 3, 'code': 3, 'web': 3, 'help': 3, 'simple': 3, 'source': 3, 'crawler': 3, 'a': 3, 'in': 3, 'am': 2, 'not': 2, 'error': 2, 'cant': 2, 'is': 2, 'my': 2, 'images': 2, 'when': 2, 'getting': 2, 'tutorial': 2, 'about': 2, 'for': 2, 'need': 2, 'app': 2, 'problem': 2, 'android': 2, 'find': 2, 'and': 2, 'studio': 1, 'running': 1, 'clock': 1, 'selenium': 1, 'codes': 1, 'mergesort': 1, 'it': 1, 'trouble': 1, 'someone': 1, 'please': 1, 'webpage': 1, 'method': 1, 'beginners': 1, 'camera': 1, 'lambda': 1, 'specified': 1, 'build': 1, 'buying': 1, 'development': 1, 'dosent': 1, 'run': 1, 'of': 1, 'anything': 1, 'mac': 1, 'reference': 1, 'mistake': 1, 'linked': 1, 'haxm': 1, 'list': 1, 'now': 1, 'trying': 1, 'on': 1, 'typecasting': 1, 'got': 1, 'current': 1, 'imagemap': 1, 'question': 1, 'undefined': 1, 'assignment': 1, 'population': 1, 'import': 1, 'able': 1, 'apple': 1, 'system': 1, 'needs': 1, 'show': 1, 'prepaid': 1, 'install': 1, 'how': 1, 'cannot': 1, 'hover': 1, 'add': 1, 'video': 1, '4': 1, 'default': 1, 'involving': 1, 'inserting': 1, 'you': 1, 'only': 1, 'function': 1, 'file': 1, 'themes': 1, 'this': 1, '28': 1, 'chooser': 1, 'refresh': 1, 'share': 1, 'link': 1, 'where': 1, 'tagif': 1, 'tip': 1, 'practice': 1, 'python': 1, 'get': 1, 'visa': 1, 'environment': 1, 'funny': 1, 'possible': 1, '42': 1, 'css': 1, 'step': 1, 'bitcoins': 1, 'time': 1, 'which': 1, 'variable': 1, 'date': 1, 'litlte': 1, 'as': 1, 'override': 1, 'capture': 1, 'effect': 1, 'intel': 1, 'can': 1, 'but': 1, 'at': 1, 'bug': 1, 'onattach': 1, 'loop': 1, 'what': 1})

Es ist praktisch, weil es Sie schlank macht und es in einem "Wörterbuch" zusammenfasst.

Darüber hinaus scheint es möglich zu sein, ein bestimmtes Wort anzugeben und seine Verwendungshäufigkeit anzuzeigen. Wenn Sie beispielsweise nur die Häufigkeit des Wortes "the" anzeigen möchten:

import requests
from bs4 import BeautifulSoup
import operator #allows you to work with build-in data types in python
from collections import Counter


def start(url):
	word_list = []
	source_code = requests.get(url).text #gonna connect to the link and use it as plain text
	soup = BeautifulSoup(source_code, 'html.parser')
	for post_text in soup.findAll('a', {'class': 'title text-semibold'}): #go through all the contents
		content = post_text.string #.string = only get the texts thats inside "soup"
		words = content.lower().split()
		for each_word in words:
			word_list.append(each_word)
	clean_up_list(word_list)

def clean_up_list(word_list):
	clean_word_list = []
	for word in word_list:
		symbols = "!@#$%^&*()_+{}:\"<>?,./;'[]-="
		for i in range(0, len(symbols)): 
			word = word.replace(symbols[i], "") #and replace it with nothing (=delete) if finds any symbols
		if len(word) > 0: #allows it to take only the actual clean words
			#print(word)
			clean_word_list.append(word)

	counts = Counter(clean_word_list)
	specific = counts["the"] #9
	print(specific)

start("https://www.thenewboston.com/forum/")

Sie können die Häufigkeit von Wörtern im "Wörterbuch" auch nach Belieben ändern, indem Sie die "Anzahl" verwenden, was mit dem normalen "Wörterbuch" mit "Anzahl" ["the"] = 15 "nicht möglich ist. Mit count [" the "] = 0 können Sie es bis zum Ende des Wörterbuchs bringen. Es kann auch mit del count [1] gelöscht werden.

Sie können auch eine Liste mit x = list (count.elements ()) erstellen.

#Gleich wie oben, also weggelassen
	counts = Counter(clean_word_list)
	counts_list = list(counts.elements())
	print(counts_list)

start("https://www.thenewboston.com/forum/")
['please', 'problem', 'problem', 'add', 'crawler', 'crawler', 'crawler', 'running', 'specified', 'is', 'is', 'dosent', 'practice', 'intel', 'anything', 'show', 'mergesort', 'image', 'image', 'image', 'list', 'import', 'tip', 'loop', 'am', 'am', 'getting', 'getting', 'population', 'get', 'buying', 'for', 'for', 'about', 'about', 'which', '4', 'on', 'prepaid', 'mistake', 'override', 'got', 'function', 'share', 'as', 'clock', 'reference', 'cannot', 'bitcoins', 'effect', 'code', 'code', 'code', 'assignment', 'you', 'can', 'images', 'images', 'haxm', 'find', 'find', 'install', 'with', 'with', 'with', 'with', 'with', 'trying', 'file', 'and', 'and', 'what', 'android', 'android', 'typecasting', 'source', 'source', 'source', 'beginners', 'someone', 'possible', 'cant', 'cant', 'how', 'method', 'app', 'app', 'i', 'i', 'i', 'i', 'i', 'system', 'where', 'webpage', 'involving', 'funny', 'current', 'it', 'linked', 'in', 'in', 'in', 'variable', 'web', 'web', 'web', 'hover', 'litlte', 'question', 'tagif', 'time', 'inserting', 'trouble', 'program', 'program', 'program', 'bug', '42', 'tutorial', 'tutorial', 'need', 'need', 'video', 'lambda', 'date', 'chooser', 'run', 'error', 'error', 'default', 'to', 'to', 'to', 'to', 'to', 'of', 'apple', 'link', 'when', 'when', 'capture', 'mac', 'css', 'step', 'refresh', 'not', 'not', 'imagemap', 'development', 'camera', 'but', 'simple', 'simple', 'simple', 'needs', 'help', 'help', 'help', 'studio', 'a', 'a', 'a', '28', 'selenium', 'the', 'the', 'the', 'the', 'the', 'the', 'the', 'the', 'the', 'now', 'themes', 'environment', 'python', 'visa', 'only', 'this', 'able', 'undefined', 'onattach', 'build', 'at', 'my', 'my', 'codes']

most_frequent = count.most_common (2) zeigt die beiden am häufigsten verwendeten Wörter most_frequent = count.most_common (2) print (most_frequent [1]) zeigt das am zweithäufigsten verwendete Wort an

Recommended Posts

Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
Erstellen Sie ein Verzeichnis mit Python
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie mit Python + PIL ein Dummy-Image.
Ich habe mit Python einen Zeichenzähler erstellt
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
[Automatisierung] Lesen Sie Word-Dokumente mit Python
Erstellen Sie eine englische Wort-App mit Python
Erstellen Sie ein Python-Modul
Erstellen Sie eine Python-Umgebung
Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund.
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Sie können auch mit Python problemlos eine GUI erstellen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie eine Farbleiste mit Python + Qt (PySide)
Schritte zum Erstellen eines Twitter-Bots mit Python
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Erstellen Sie mit Python + Qt (PySide) ein farbspezifisches Widget.
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Erstellen Sie einfach eine Python-Konsolenanwendung mit Click
Erstellen Sie ein Wox-Plugin (Python)
Erstellen Sie eine Funktion in Python
Erstellen Sie ein 3D-GIF mit Python3
[Python] Generieren Sie ValueObject mit dem vollständigen Konstruktor mithilfe von Datenklassen
Erstellen Sie eine Homepage mit Django
Warum nicht einfach mit Python eine stilvolle Tabelle erstellen?
Erstellen Sie ein Python-Numpy-Array
Machen Sie eine Lotterie mit Python
[Python] Erstellen Sie mit np.arange ein Datumsarray mit beliebigen Inkrementen
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
[Python] Erstellen Sie mit cx_Freeze eine Verteilungsdatei für das Tkinter-Programm
Erstellen Sie mit Quarry einen gefälschten Minecraft-Server in Python
Erstellen Sie eine 2D-CAD-Datei ".dxf" mit Python [ezdxf]
[Python] Erstellen Sie mit tkinter einen Bildschirm zur Datei- und Ordnerpfadspezifikation
Erstellen Sie einen Mastodon-Bot mit einer Funktion, die automatisch mit Python antwortet
Erstellen Sie ein untergeordnetes Konto für die Verbindung mit Stripe in Python
Erstellen wir ein Skript, das sich bei Ideone.com in Python registriert.
Wahrscheinlich der einfachste Weg, um mit Python 3 ein PDF zu erstellen
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Erstellen Sie mit python wxpython + openCV ein einfaches Videoanalysetool
Erstellen Sie mit VSCode & Docker Desktop eine einfache Python-Entwicklungsumgebung
Erstellen Sie eine Nachricht, die der Lokalisierung entspricht, mit einer Python-Übersetzungszeichenfolge
[Python] Erstellen Sie mit Django einen Bildschirm für den HTTP-Statuscode 403/404/500
[Python] Was ist eine with-Anweisung?
Löse ABC163 A ~ C mit Python
Bedienen Sie den Belegdrucker mit Python
Erstellen Sie Awaitable mit der Python / C-API
Erstellen Sie einen DI-Container mit Python
Lassen Sie uns eine GUI mit Python erstellen.