1

次のコードを使用して csv ファイルに書き込みます。

import urllib2
from BeautifulSoup import BeautifulSoup
import csv
import re

page = urllib2.urlopen('http://finance.yahoo.com/q/ks?s=F%20Key%20Statistics').read()

f = csv.writer(open("pe_ratio.csv","wb"))
f.writerow(["Name","PE","Revenue % YOY","ROA% YOY","OCF Positive","Debt - Equity"])

soup = BeautifulSoup(page)
all_data = soup.findAll('td', "yfnc_tabledata1")
f.writerow(('Ford', all_data[2].getText()))



name_company = soup.findAll("div", {"class" : "title"})
# find all h2

#print soup.prettify

#h2 div class="title"

print name_company

csv ファイルに入れたいものが見つかりましたが、「Ford Motor Co. (F)」に制限する必要があります。name_company を出力すると、次のようになります。

 [<div class="title"><h2>Ford Motor Co. (F)</h2>     <span class="rtq_exch">    <span             class="rtq_dash">-</span>NYSE      </span><span class="wl_sign"></span></div>]

name_company.next と name_company.content[0] を使用してみました。何がうまくいくでしょうか?name_company は findall を使用していますが、それが .content と .next を null にするかどうかはわかりません。事前にご協力いただきありがとうございます。

4

1 に答える 1

2

find()次の<h2>タグを取得するために使用しstring、そのテキスト ノードを読み取るために使用します。

name_company = soup.findAll("div", {"class" : "title"})
for name in name_company:
    print name.find('h2').string

更新:コメントを参照してください。

for name in name_company:
    ford = name.find('h2').string
    f.writerow([ford, all_data[2].getText()])

次の結果が得られます。

Name,PE,Revenue % YOY,ROA% YOY,OCF Positive,Debt - Equity
Ford Motor Co. (F),11.23
于 2013-10-31T21:12:09.110 に答える