私はいくつかの Ruby を除いてコーディングのバックグラウンドが非常に限られているため、これを行うためのより良い方法があれば教えてください!
基本的に、単語でいっぱいの .txt ファイルがあります。.txt ファイルをインポートして、リストに変換したいと考えています。次に、リストの最初の項目を変数に割り当て、その変数を外部リクエストで使用して、単語の定義を取得します。定義が返され、別の .txt ファイルに入れられます。それが完了したら、コードでリスト内の次の項目を取得し、リストが使い果たされるまですべてを繰り返します。
以下は、私がどこにいるのかを知るために進行中のコードです。リストを正しく反復処理する方法をまだ見つけようとしていますが、ドキュメントを解釈するのに苦労しています。
これがすでに尋ねられている場合は、事前に申し訳ありません!検索しましたが、私の問題に具体的に答えたものは見つかりませんでした。
from __future__ import print_function
import requests
import urllib
from bs4 import BeautifulSoup
def get_definition(x):
url = 'http://services.aonaware.com/DictService/Default.aspx?action=define&dict=wn&query={0}'.format(x)
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html, "lxml")
return soup.find('pre', text=True)[0]
lines = []
with open('vocab.txt') as f:
lines = f.readlines()
lines = [line.strip() for line in lines]
definitions = []
for line in lines:
definitions.append(get_definition(line))
out_str = '\n'.join(definitions)
with open('definitions.txt', 'w') as f:
f.write(out_str)
私が抱えている問題は
Traceback (most recent call last):
File "WIP.py", line 20, in <module>
definitions.append(get_definition(line))
File "WIP.py", line 11, in get_definition
return soup.find('pre', text=True)[0]
File "/Library/Python/2.7/site-packages/bs4/element.py", line 958, in __getitem__
return self.attrs[key]
KeyError: 0
soup.find('pre', text=True)
が返されていることは理解していNone
ますが、それを修正する理由や方法はわかりません。