我正在编写一个脚本来下载和处理历史股票价格。 当我使用urllib.request.urlopen时,我在每个文件(b'\ xef \ xbb \ xbf)中都有一个奇怪的文本前缀,这个文件在我使用urllib.request.urlretrieve时不存在,当我输入url到ur浏览器(Firefox)。 所以我有一个答案,但我不知道为什么它首先导致问题。我怀疑这可能是因为我强迫它成为一个字符串,但我不知道为什么会这样或我将如何解决(除了使用urlretrieve)。 代码如下。相关的行是第11行。之后的注释代码是我使用orlopen的时候。
#download a bunch of historical stock quotes from google finance
import urllib.request
symbolarray = []
symbolfile = open("symbols.txt")
for line in symbolfile:
symbolarray.append(line.strip())
symbolfile.close()
for symbol in symbolarray:
page = urllib.request.urlretrieve("http://www.google.com/finance/historical?q=NYSE:"+symbol+"&output=csv",symbol+".csv")
#datafile = open(symbol+".csv","w")
#datafile.write(str(page.read()))
#datafile.close()
答案 0 :(得分:3)
0xEF,0xBB,0xBF是BOM for utf-8。它表示这是一个utf-8编码的字符串。我猜你如果使用wireshark,你会发现它一直存在。这只是大多数程序忽略它。
如果您要删除BOM,则应尝试str(page.read())
,而不是page.read().decode('utf-8-sig')
。如果你想保留它,你可以用'utf-8'进行解码。