2017-01-27 13 views
0

誰でも私はここで動作させることができない理由を説明するのに役立つことができますか?Python BeautifulSoupどのように抽出/検索する

私はBeautifulSoupのドキュメントをよく理解できません。

req = Request('http://performance.morningstar.com/stock/performance-return.action?p=dividend_split_page&t=D05, headers={'User-Agent': 'Mozilla/5.0'}) 
webpage = urlopen(req).read() 

soup = bs4.BeautifulSoup(webpage, 'lxml') 

div = soup.find('div', {'id': 'div_annual_dividends'}) 

th = div.find('th', text="Dividend Amount") 

のIiのカントは、これは私が受信したエラーであるnextSibling.text

を使用して値0.56を抽出しているようです。

AttributeError: 'NoneType' object has no attribute 'nextSibling' 

どのように出力を配列に格納できますか?

for tr in soup('th', text="Dividend Amount"): 
row = [td.text for td in tr('td')] 
print(row) 

これは正しいでしょうか?

答えて

0

このページではJavaScriptによってレンダリングされ、実際のデータは、このURLにある:あなたがクロームのDev-ToolsでこのURLを見つけることができます

http://performance.morningstar.com/perform/Performance/stock/annual-dividends.action?&t=XSES:D05&region=sgp&culture=en-US&cur=&ops=clear&ndec=2&y=5 

enter image description here

コード:

import requests, bs4 

r = requests.get('http://performance.morningstar.com/perform/Performance/stock/annual-dividends.action?&t=XSES:D05&region=sgp&culture=en-US&cur=&ops=clear&ndec=2&y=5') 
soup = bs4.BeautifulSoup(r.text, 'lxml') 
rows = [] 
for tr in soup('tr', class_=False): 
    row = [td.text for td in tr('td')] 
    rows.append(row) 

アウト:

[['0.56', '0.56', '0.58', '0.60', '0.60'], 
['3.77', '3.27', '2.82', '3.59', '3.46']] 
+0

はAttributeError: 'NavigableString' オブジェクトは、私がnextSibling.text –

+0

を印刷行う場合は、コメントを含めると、あなたを更新することができます何の属性 'テキスト' を持っていません私はそれらを配列に格納できるようなコードですか? 私はスープのtr( 'tr'、class_ = False)について理解しています:htmlの「配当金額」を取得します。 しかし、どのようにしてtdを配列に格納できますか? ありがとうございます。 –

+0

@OOI YI YONGあなたが問題にしたい出力を投稿してください。 –

関連する問題