0
タグがimg altの1つのフィールドを除いて、ウェブサイトからデータを正常に抽出できます。ここでは、コードは次のとおり美味しいスープを使ってimg altタグでテキストを抽出する
#import pandas as pd
import re
from urllib2 import urlopen
from bs4 import BeautifulSoup
# gets a file-like object using urllib2.urlopen
url = 'http://ecal.forexpros.com/e_cal.php?duration=daily'
html = urlopen(url)
soup = BeautifulSoup(html)
# loops over all <tr> elements with class 'ec_bg1_tr' or 'ec_bg2_tr'
for tr in soup.find_all('tr', {'class': re.compile('ec_bg[12]_tr')}):
# finds desired data by looking up <td> elements with class names
event = tr.find('td', {'class': 'ec_td_event'}).text
currency = tr.find('td', {'class': 'ec_td_currency'}).text
actual = tr.find('td', {'class': 'ec_td_actual'}).text
forecast = tr.find('td', {'class': 'ec_td_forecast'}).text
previous = tr.find('td', {'class': 'ec_td_previous'}).text
time = tr.find('td', {'class': 'ec_td_time'}).text
importance = tr.find('td', {'class': 'ec_td_importance'}).text
# the returned strings are unicode, so to print them we need a unicode string
print u'{:3}\t{}\t{:5}\t{:8}\t{:8}\t{:8}\t{}'.format(currency, importance, time, actual, forecast, previous, event)
次のように出力の最初のいくつかのレコードは、次のとおり
JPY 01:00 43.8 43.6 43.3 Household Confidence
CHF 01:45 -3 -3 -8 SECO Consumer Climate
RON 02:00 2.50% 3.30% PPI (YoY)
EUR 03:00 -26.9K -66.5K -98.3K Spanish Unemployment Change
CHF 03:15 1.5% 1.3% -0.8% Retail Sales (YoY)
CHF 03:30 60.9 58.9 60.1 SVME PMI
GBP 04:30 51.9 54.5 54.8 Construction PMI
importance
フィールドはimg
alt
にデータが含まれているので、おそらく(上記の出力に表示されていません)。
誰でもこれを解決する方法を知っていますか?
ありがとうございます!
EDIT:
問題が置き換えることで解決されます。
importance = tr.find('td', {'class': 'ec_td_importance'}).text
と:
importance = tr.find('td', {'class': 'ec_td_importance'}).img.get('alt')