1

Python の HTMLParser と BeautifulSoup を使用して、Yahoo の財務データを解析しています。これを行うために書かれた非常に優れたパッケージが既にありますが、「具体的な価格/帳簿価額」を取得しません。つまり、帳簿価額の計算にのれんやその他の無形資産が含まれています。したがって、私は自分のソリューションを展開することを余儀なくされています。

それはきれいではありませんでした。これがコードです

from BeautifulSoup import BeautifulSoup
import urllib2
from HTMLParser import HTMLParse

class data(HTMLParser):
    def handle_data(self, data):
        print data
parser = data()

url='http://finance.yahoo.com/q/bs?s=BAC&annual'
response = urllib2.urlopen(url)
html = response.read()
soup=BeautifulSoup(html)
tangibles=[str(parser.feed(str(soup('strong')[24:26])))]

これには 2 つの問題があります。1) データが常に Yahoo のページの同じ場所にあることに頼っています。これは最大の問題ではありませんが、私を満足させるものではありません。2) 本当の問題です。

 tangibles=[str(parser.feed(str(soup('strong')[24:26])))]

「データ」クラスは必要なものを印刷しているだけで、保存していないため、空のリストです。

パート 2) についてお答えいただければ幸いです。授業はまだわかりません。

4

1 に答える 1

2

データとパーサーとサポートするインポートを取り除き、これを行います。

tangibles = [''.join(node(text=True)).strip() for node in soup('strong')[24:26]]

私は基本的にこれをいくつかのpythonリスト内包表記を使用するように変更しました。Python のリスト内包表記が何かわからない場合は、こちらをお読みください。

本質的に、次のことを行います。

  1. 強いラベルの付いた要素を見つけ、各インスタンスに名前を付けるようにスープに指示しますnode for node in soup.findAll('strong')[24:26]
  2. その中nodeで、強力なタグを完全に見つけて削除しnode.findAll(text=True) ます text=True に関する美しいスープドキュメント
  3. の要素を結合するnodeので、長さが 1 要素のリストではなく、1 要素になります''.join()(Python のトリック)。

    すなわち['Net Stuff', '152,113,000'][['Net Stuff'], ['152,113,000']]

  4. 余分な空白(末尾と先頭)を削除します.strip()

于 2012-08-05T06:58:23.123 に答える