http://www.wsj.com/mdc/public/page/2_3021-activnyse-actives.htmlの情報を.htmlファイルにプルするbash(これはPythonの別のプログラムを呼び出します)にプログラムを書き、.htmlファイルを.xhtmlに変換してから.csvに変換します。これは1分ごとにプロセスを繰り返すようにループを実行します。以下は、bashのコードは次のとおりです。wget空のファイルを作成する
#!/bin/bash
n=0
while [ $n -lt 60 ]
do
filename="$(date +"%Y-%m-%d-%H-%M-%S")"
wget -O - http://www.wsj.com/mdc/public/page/2_3021-activnyse-actives.html > "$filename.html"
java -jar tagsoup-1.2.1.jar --files "$filename.html"
python xhtmlToCsv.py "$filename.xhtml" > "$filename.csv"
((n++))
sleep 60
done
そして、ここではそれが呼び出すPythonプログラムです:
import sys
import xml.dom.minidom
document = xml.dom.minidom.parse(sys.argv[1])
tableElements = document.getElementsByTagName('table')
print "exchange,symbol,company,volume,price,change"
lines = tableElements[2].getElementsByTagName('td')
n = 0
data = [None] * 6
for i in lines:
if n % 6 == 1:
del data[:]
data = [None] * 6
for node in i.childNodes:
if n % 6 + 1 < 6:
data[n%6+1] = node.nodeValue
if n%6+1 == 3:
data[n%6+1] = data[n%6+1].replace(",", "")
for items in i.getElementsByTagName('a'):
j = i.getElementsByTagName('a')[0]
for node in j.childNodes:
data[0] = 'NYSE'
data[1] = node.nodeValue[node.nodeValue.index('(')+1:node.nodeValue.index(')')]
data[2] = node.nodeValue[0:node.nodeValue.index(" (")]
if n % 6 == 5 and n > 6:
print data[0] + "," + data[1] + "," + data[2] + "," + data[3] + "," + data[4] + "," + data[5]
n+=1
私は得ることはありませんどのような、しかし、なぜ約コードによって生成されたすべての第三の.htmlファイルです空のファイルを返します。コードに何か問題がありますか、それとも私の接続ですか?接続だけの場合は、空のファイルを破棄してもう一度やり直す方法がありますか?
Pythonですべてを書くことで、エラー状態をよりよく制御できます。 'requests'(または普通の' urllib2')を使ってデータを取得し、 'BeautifulSoup'を使ってHTMLの"タグスープ "をナビゲートすることができます。 –
'print()'を使用して変数に値を表示し、コードのどの部分が実行されるかは問題の発見に役立ちます。デバッガの使い方を学ぶ。 – furas
まず、ファイルからすべてのデータを読み込んで、何かが得られたか、空の文字列があるかどうかを確認する必要があります。そして、あなたはファイルを再びダウンロードするためにbashで使うことができるエラーコードで 'exit()'することができます。しかし、ファイルをダウンロードしてデータを取得するには、 'wget'や' java'の代わりにpythonを使用する方が簡単でしょう。 – furas