2016-11-10 5 views
0

i einfache tokenization peform wollen Zeile die Anzahl der Wörter in HTML-Zeile zu zählen, mit Ausnahme der Worte zwischen <a>-Tag und den Wörtern zwischen <a> Tag wird einzelnPython, wie die Anzahl der Wörter in HTML-Zeile für Zeile zählen

zählen

kann nltk das tun? oder kann eine Bibliothek das machen?

zum Beispiel: dies der HTML-Code

<div class="side-article txt-article"> 
<p><strong>BATAM.TRIBUNNEWS.COM, BINTAN</strong> - Tradisi pedang pora mewarnai serah terima jabatan pejabat di <a href="http://batam.tribunnews.com/tag/polres/" title="Polres">Polres</a> <a href="http://batam.tribunnews.com/tag/bintan/" title="Bintan">Bintan</a>, Senin (3/10/2016).</p> 
<p>Empat perwira baru Senin itu diminta cepat bekerja. Tumpukan pekerjaan rumah sudah menanti di meja masing masing.</p> 
<p>Para pejabat tersebut yakni AKP Adi Kuasa Tarigan, Kasat Reskrim baru yang menggantikan AKP Arya Tesa Brahmana. Arya pindah sebagai Kabag Ops di <a href="http://batam.tribunnews.com/tag/polres/" title="Polres">Polres</a> Tanjungpinang.</p> 

und i die Ausgabe

WordsCount : 0 LinkWordsCount : 0 
WordsCount : 21 LinkWordsCount : 2 
WordsCount : 19 LinkWordsCount : 0 
WordsCount : 25 LinkWordsCount : 2 

WordsCount werden wollen, ist die Anzahl der Wörter in jeder Zeile mit Ausnahme der Text zwischen <a>-Tag. Und wenn ein Wort zweimal erscheint, wird es als zwei gezählt. LinkWordsCount ist die Anzahl der Wörter zwischen <a> Tag.

so, wie es Zeile für Zeile außer dem <a> Tag zu zählen, und die Wörter zwischen <a> Tag wird einzeln zählen.

Vielen Dank.

+0

Ich bin ein mit etwas Mühe, deine Frage zu verstehen. Können Sie bitte zeigen, was die aktuelle Ausgabe ist und was die Ausgabe sein soll, damit wir sehen können, wie sie sich unterscheiden? Danke – mmenschig

Antwort

-1

Ich würde vorschlagen, um zu versuchen, mit RegEx in Python zu gehen, die re ist

Um einen Link Wörter verwenden regex zu zählen, die auch Sie href = wie this one

RegEx zählen helfen, Worte zu finden, die nicht zu tun Include <> und indem Sie sie mit Raum teilen, werden Sie Array haben, das Sie len können und die Anzahl der Wörter haben.

Das wäre der Weg, den ich nehmen würde.

+2

Bitte schlagen Sie nicht vor, [HTML mit RegEx zu analysieren] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454). .. – lenz

0

Iterieren Sie über jede Zeile von Raw HTML und suchen Sie einfach in jeder Zeile nach Verknüpfungen.

Im folgenden Beispiel verwende ich einen sehr naiven Weg, um die Wörter zu zählen - spalte die Zeile durch Leerzeichen (so wird - als Wort gezählt und BATAM.TRIBUNNEWS.COM zählt als einzelnes Wort).

from bs4 import BeautifulSoup 

html = """ 
<div class="side-article txt-article"> 
<p><strong>BATAM.TRIBUNNEWS.COM, BINTAN</strong> - Tradisi pedang pora mewarnai serah terima jabatan pejabat di <a href="http://batam.tribunnews.com/tag/polres/" title="Polres">Polres</a> <a href="http://batam.tribunnews.com/tag/bintan/" title="Bintan">Bintan</a>, Senin (3/10/2016).</p> 
<p>Empat perwira baru Senin itu diminta cepat bekerja. Tumpukan pekerjaan rumah sudah menanti di meja masing masing.</p> 
<p>Para pejabat tersebut yakni AKP Adi Kuasa Tarigan, Kasat Reskrim baru yang menggantikan AKP Arya Tesa Brahmana. Arya pindah sebagai Kabag Ops di <a href="http://batam.tribunnews.com/tag/polres/" title="Polres">Polres</a> Tanjungpinang.</p> 
""" 

soup = BeautifulSoup(html.strip(), 'html.parser') 

for line in html.strip().split('\n'): 
    link_words = 0 

    line_soup = BeautifulSoup(line.strip(), 'html.parser') 
    for link in line_soup.findAll('a'): 
     link_words += len(link.text.split()) 

    # naive way to get words count 
    words_count = len(line_soup.text.split()) 
    print ('WordsCount : {0} LinkWordsCount : {1}' 
      .format(words_count, link_words)) 

Ausgang:

WordsCount : 0 LinkWordsCount : 0 
WordsCount : 16 LinkWordsCount : 2 
WordsCount : 17 LinkWordsCount : 0 
WordsCount : 25 LinkWordsCount : 1 

EDIT

Wenn Sie den HTML-Code aus einer Datei lesen möchten, verwenden Sie so etwas wie dieses:

with open(path_to_html_file, 'r') as f: 
    html = f.read() 
+0

Wow Danke! es ist wirklich Arbeit. Aber wenn ich HTML aus einer Datei verwende. sein Attribut AttributeError: 'Datei' hat kein Attribut 'Streifen'. Was muss ich tun, wenn ich eine Datei html als Eingabe verwende? –

Verwandte Themen