RSSのフィードをパースしようとしてまずはフィードから全ての単語を取り出す関数を作ろうとしたのですがVScode上で以下のようなエラーが発生します。エラーを調べましたが
python
1import feedparser 2import re 3 4# RSSフィードのタイトルと、単語の頻度のディクショナリを返す 5 6 7def getwordcounts(url): 8 # フィードをパースする 9 d = feedparser.parse(url) 10 wc = {} 11 12 # 全てのエントリをループする 13 for e in d.entries: 14 if 'summary' in e: 15 summary = e.summary 16 else: 17 summary = e.description 18 # 単語のリストを洗い出す 19 words = getwords(e.title + ' ' + summary) 20 for word in words: 21 wc.setdefault(word, 0) 22 wc[word] += 1 23 return d.feed.title, wc 24 25 26def getwords(html): 27 # 全てのHTMLタグを取り除く 28 txt = re.compile(r'<[^>]+>').sub('', html) 29 30 # 全ての日アルファベット文字で分割する 31 words = re.compile(r'[^A-Z^a-z]+').split(txt) 32 # 小文字に変換する 33 return [word.lower() for word in words if word != ''] 34 35 apcount = {} 36 wordcounts = {} 37 feedlist = [line for line in open('feedlist.txt')] 38 for feedurl in feedlist: 39 try: 40 title, wc = getwordcounts(feedurl) 41 wordcounts[title] = wc 42 for word, count in wc.items(): 43 apcount.setdefault(word, 0) 44 if count > 1: 45 apcount[word] += 1 46 except: 47 print('Failed to parse feed %s' % feedurl) 48 wordlist = [] 49 for w, bc in apcount.items(): 50 frac = float(bc) / len(feedlist) 51 if frac > 0.1 and frac < 0.5: 52 wordlist.append(w) 53 54 out = open('blogdata.txt', 'w') 55 out.write('Blog') 56 for word in wordlist: 57 out.write('\t%d' % wc[word]) 58 out.write('\n') 59 for blog, wc in wordcounts.items(): 60 out.write(blog) 61 for word in wordlist: 62 if word in wc: 63 out.write('\t%d' % wc[word]) 64 else: 65 out.write('\t0') 66 out.write('\n') 67
と出てきます
これについて調べましたが原因が全くわからなかったため投稿しました。
よろしければご回答いただければ幸いです。