2016-03-28 33 views
0

Bu yüzden bir HTML sayfasından öğe listesi yaptım ve bu öğelerin sıklığını saydım. Ama sadece "bb" ve "nw" gibi bazı özel elemanlara ihtiyacım var. Yani listede hangi pozisyonda olacaklarını bilmiyorum ve onları diğer öğelerden nasıl ayıracağımı bilmiyorum.Python: Belirli bir liste öğeleri alınıyor

Bu benim kod şimdiye kadar geçerli:

from bs4 import BeautifulSoup 
import urllib2 
import re 
import operator 
from collections import Counter 
from string import punctuation 

source_code = urllib2.urlopen('https://de.wikipedia.org/wiki/Liste_von_Angriffen_auf_Fl%C3%BCchtlinge_und_Fl%C3%BCchtlingsunterk%C3%BCnfte_in_Deutschland/bis_2014') 
html = source_code.read() 
soup = BeautifulSoup(html, "html.parser") 

text = (''.join(s.findAll(text=True))for s in soup.findAll('a')) 

c = Counter((x.rstrip(punctuation).lower() for y in text for x in y.split())) 

bb,nw=operator.itemgetter(1,2)(c.most_common()) 
print(bb,nw) 

Yardımlarınız ve herhangi ipuçları için teşekkür ederiz. Bir filtresi kullanabilirsiniz

+1

Ne demek? Frekanslarına ihtiyacınız olduğu anlamına mı geliyor? – Peaceful

cevap

2

: Alternatif

relevant_items = ('bb', 'nw') 
items = filter(lambda x: x[0] in relevant_items, c.most_common()) 

, zaten anlama filtreleme yapabilirsiniz: Yalnızca belirli öğeleri ihtiyaç tarafından

c = Counter((x.rstrip(punctuation).lower() for y in text for x in y.split() if x in relevant_items)) 
+0

Çok teşekkürler. Bu tam olarak ne arıyordum. –

İlgili konular