我使用以下代码写入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文件中的内容,但现在我需要将其限制为“福特汽车公司(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。感谢您的帮助。
答案 0 :(得分: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