Большой текст в списке со страницы - PullRequest
1 голос
/ 20 июня 2020
from urllib.request import urlopen
from bs4 import BeautifulSoup
from bs4 import UnicodeDammit
from collections import Counter
import re
import textwrap

class Testing:
    def woorden_tellen(webpage):
        counts = dict()
        webpage = webpage
        html = urlopen(webpage)
        floats = []
        bs = BeautifulSoup(html, 'html.parser')
        content = bs.findAll('p', {'class' : 'text_3v_J6Y0G'})
        ## gaat door de tekst in het tekstblok
        for tekst in content:
            woorden_tekst = tekst.get_text().split()
            print(woorden_tekst) ## test results
            ## counter start
            for word in woorden_tekst:
                if word in counts:
                    counts[word] = +1
                else:
                    counts[word] = 1
            counts = Counter(woorden_tekst) # woorden count
            totaal = (counts['van']) # count
            #print(totaal) # result

webpage = 'https://nos.nl/artikel/2336784-groep-sleept-staat-voor-rechter-om-stankoverlast-door-megastallen.html'
Testing.woorden_tellen(webpage)

Когда я пытаюсь получить текст и поместить его в список по адресу woorden_tekst = tekst.get_text().split(), он создает несколько списков вместо одного. Есть у кого-нибудь решение для этого?

1 Ответ

1 голос
/ 20 июня 2020

Чтобы получить количество слов в каждом текстовом блоке на странице, вы можете использовать это:

from bs4 import BeautifulSoup
from collections import Counter
from urllib.request import urlopen


class Testing:
    def woorden_tellen(webpage):
        bs = BeautifulSoup(urlopen(webpage), 'html.parser')
        content = bs.findAll('p', {'class' : 'text_3v_J6Y0G'})

        counts = Counter(word for tekst in content for word in tekst.get_text().split())

        return counts

webpage = 'https://nos.nl/artikel/2336784-groep-sleept-staat-voor-rechter-om-stankoverlast-door-megastallen.html'
print( Testing.woorden_tellen(webpage) )

Печать:

Counter({'de': 32, 'het': 16, 'van': 13, 'dat': 10, 'een': 8, 'en': 8, 'op': 8, 'zegt': 6, 'overheid': 5, 'in': 5, 'burgers': 4, 'voor': 4, 'wordt': 4, 'groep': 3, 'die': 3, 'door': 3, 'Het': 3, 'De': 3, 'Staat': 3, 'niet': 3, 'ze': 3, 'zestien': 2, 'om': 2, 'inwoner': 2, 'veel': 2, 'hebben': 2, 'Brabants': 2, 'platform': 2, 'bescherming': 2, 'eerder': 2, 'veehouders': 2, 'er': 2, 'woongenot': 2, 'Europees': 2, 'Verdrag': 2, 'Rechten': 2, 'naar': 2, 'hun': 2, 'is': 2, 'bij': 2, 'al': 2, 'omwonenden': 2, 'maar': 2, 'Verbeek': 2, 'boeren': 2, 'moet': 2, 'meer': 2, 'daar': 2, 'Een': 1, 'heeft': 1, 'rechter': 1, 'gedaagd': 1, 'vanwege': 1, 'stank': 1, 'veroorzaakt': 1, 'megastallen.': 1, 'gaat': 1, 'twaalf': 1, 'mensen': 1, 'uit': 1, 'Noord-Brabant,': 1, 'twee': 1, 'inwoners': 1, 'Limburg,': 1, 'Gelderland': 1, 'Overijssel.': 1, 'Zij': 1, 'zeggen': 1, 'platteland': 1, '"voortdurend': 1, 'last': 1, 'overdosis': 1, 'stank"': 1, 'willen': 1, 'beter': 1, 'beschermd': 1, 'worden.': 1, 'werken': 1, 'samen': 1, 'met': 1, 'Burgerplatform,': 1, 'beweging': 1, 'opkomt': 1, '"verontruste': 1, 'bewoners': 1, 'platteland".': 1, 'In': 1, 'verklaring': 1, 'veehouderij': 1, 'dit': 1, 'moment': 1, 'te': 1, 'beschermd.': 1, '"Door': 1, 'uitzonderingen': 1, 'wet': 1, 'overmatige': 1, 'verworven': 1, 'rechten': 1, 'zoveel': 1, 'hinder': 1, 'toegestaan,': 1, 'recht': 1, 'ongestoord': 1, 'geschonden."': 1, 'Volgens': 1, 'schendt': 1, 'Mens,': 1, 'Grondwet': 1, 'Burgerlijk': 1, 'Wetboek,': 1, 'doordat': 1, 'mening': 1, 'beschermt.': 1, 'Ze': 1, 'verwijzen': 1, 'dagvaarding': 1, 'varkens-': 1, 'rundvee-': 1, 'pluimveehouderijen.': 1, 'Burgerplatform': 1, 'denkt': 1, 'reële': 1, 'kans': 1, 'succes': 1, 'rechter.': 1, '"De': 1, 'werd': 1, 'vingers': 1, 'getikt': 1, 'vergelijkbare': 1, 'kwestie:': 1, 'Urgenda-zaak",': 1, 'meldt': 1, 'platform.': 1, '"Ook': 1, 'hier': 1, 'ging': 1, 'onvoldoende': 1, 'burgers,': 1, 'tegen': 1, 'klimaatverandering,': 1, 'schending': 1, 'Mens."': 1, 'vaker': 1, 'geklaagd': 1, 'Raad': 1, 'State,': 1, 'steeds': 1, 'nul': 1, 'rekest': 1, 'kregen.': 1, 'Advocaat': 1, 'Nout': 1, 'AD': 1, 'niets': 1, 'fout': 1, 'doen,': 1, 'omdat': 1, 'binnen': 1, 'vergunningsruimte': 1, 'blijven': 1, 'biedt.': 1, '"Ze': 1, 'doen': 1, 'dus': 1, 'niks': 1, 'fout.': 1, 'Die': 1, 'vergunningen': 1, 'hadden': 1, 'alleen': 1, 'nooit': 1, 'mogen': 1, 'worden': 1, 'toegekend."': 1, 'vizier': 1, 'dan': 1, 'ook': 1, 'gericht': 1, 'is,': 1, 'overheid.': 1, '"Varkensvlees': 1, 'zo': 1, 'goedkoop': 1, 'mogelijk.': 1, 'Veehouders': 1, 'houden': 1, 'daarom': 1, 'dieren,': 1, 'betalen': 1, 'prijs': 1, 'voor.': 1, 'iets': 1, 'aan': 1, 'doen."': 1, 'eist': 1, 'onder': 1, 'kleinere': 1, 'veestapel': 1, 'verplichte,': 1, 'betere': 1, 'luchtwassers.': 1, 'Hun': 1, 'advocaat': 1, 'krant': 1, 'reëel': 1, 'geld': 1, 'daarvoor': 1, 'hebben.': 1, '"Voor': 1, 'mijn': 1, 'part': 1, 'doet': 1, 'investering",': 1, 'hij.': 1, '"Maar': 1, 'burger': 1, 'verdient': 1, 'bescherming."': 1})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...