wget创建空文件

时间:2017-11-26 23:15:13

标签: python bash wget

我在bash中编写了一个程序(用Python调用另一个程序),将http://www.wsj.com/mdc/public/page/2_3021-activnyse-actives.html中的信息提取到.html文件中,然后将其转换为.xhtml,然后转换为.csv。这会循环一个循环,以便每隔一分钟左右重复一个小时。以下是bash代码:

#!/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文件都会返回一个空文件。代码有问题,还是仅仅是我的连接?如果它只是连接,有没有办法可以抛出空文件再试一次?

1 个答案:

答案 0 :(得分:0)

更新:我明白了。我所要做的只是对生成的.csv文件进行行计数,如果它只有1,则表示没有数据被传输,因此该迭代的文件将被抛出。

a=($(wc $filename.csv))
x=${a[0]}
if [ $x -eq 1 ]
then
    rm $filename.html
    rm $filename.xhtml
    rm $filename.csv
else
    ((n++))
    sleep 60
fi

感谢大家的意见。