Python 2.5 を使用して、HTML ファイルから 3 つの異なる情報を読み取っています。情報を見つける方法は、regex * との一致を見つけ、一致する行から特定の行数を数えて、探している実際の情報を取得することです。 問題は、サイトを 3 回 (検索している情報ごとに 1 回) 再度開く必要があることです。効率が悪いと思うので、一度だけサイトを開いて、3 つすべてを調べられるようにしたいと考えています。 誰かがより良い方法や提案を持っていますか?
* BeautifulSoup などのより良い方法を学習しますが、今のところ、簡単な修正が必要です
コード:
def scrubdividata(ticker):
try:
f = urllib2.urlopen('http://dividata.com/stock/%s'%(ticker))
lines = f.readlines()
for i in range(0,len(lines)):
line = lines[i]
if "Annual Dividend:" in line:
s = str(lines[i+1])
start = '>\$'
end = '</td>'
AnnualDiv = re.search('%s(.*)%s' % (start, end), s).group(1)
f = urllib2.urlopen('http://dividata.com/stock/%s'%(ticker))
lines = f.readlines()
for i in range(0,len(lines)):
line = lines[i]
if "Last Dividend:" in line:
s = str(lines[i+1])
start = '>\$'
end = '</td>'
LastDiv = re.search('%s(.*)%s' % (start, end), s).group(1)
f = urllib2.urlopen('http://dividata.com/stock/%s'%(ticker))
lines = f.readlines()
for i in range(0,len(lines)):
line = lines[i]
if "Last Ex-Dividend Date:" in line:
s = str(lines[i+1])
start = '>'
end = '</td>'
LastExDivDate = re.search('%s(.*)%s' % (start, end), s).group(1)
divlist.append((ticker,LastDiv,AnnualDiv,LastExDivDate))
except:
if ticker not in errorlist:
errorlist.append(ticker)
else:
pass
pass
ありがとう、
B
うまくいく解決策を見つけました!余分な urlopen コマンドと readlines コマンドを 2 つ削除し、ループ用に 1 つだけ残しました (urlopen コマンドだけを削除して readlines を残す前に)。これが私の修正されたコードです:
def scrubdividata(ticker):
try:
f = urllib2.urlopen('http://dividata.com/stock/%s'%(ticker))
lines = f.readlines()
for i in range(0,len(lines)):
line = lines[i]
if "Annual Dividend:" in line:
s = str(lines[i+1])
start = '>\$'
end = '</td>'
AnnualDiv = re.search('%s(.*)%s' % (start, end), s).group(1)
#f = urllib2.urlopen('http://dividata.com/stock/%s'%(ticker))
#lines = f.readlines()
for i in range(0,len(lines)):
line = lines[i]
if "Last Dividend:" in line:
s = str(lines[i+1])
start = '>\$'
end = '</td>'
LastDiv = re.search('%s(.*)%s' % (start, end), s).group(1)
#f = urllib2.urlopen('http://dividata.com/stock/%s'%(ticker))
#lines = f.readlines()
for i in range(0,len(lines)):
line = lines[i]
if "Last Ex-Dividend Date:" in line:
s = str(lines[i+1])
start = '>'
end = '</td>'
LastExDivDate = re.search('%s(.*)%s' % (start, end), s).group(1)
divlist.append((ticker,LastDiv,AnnualDiv,LastExDivDate))
print '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'
print ticker,LastDiv,AnnualDiv,LastExDivDate
print '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'
except:
if ticker not in errorlist:
errorlist.append(ticker)
else:
pass
pass