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 文件返回一个空文件。代码有问题,还是只是我的连接?如果只是连接,有没有办法扔掉空文件并重试?

亚历克斯·罗德里格斯

更新:我想通了。我所要做的就是对生成的 .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

谢谢各位的意见。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章