谷歌财务刮刀回归

时间:2015-08-13 13:43:03

标签: python regex screen-scraping finance stock

我对python和编程很新。我目前正在编写一个脚本来从Google财经中搜集股票报价。这是我的代码:

import urllib.request as ur
import re

def getquote(symbol):
    base_url = 'http://finance.google.com/finance?q='
    content = ur.urlopen(base_url + symbol).read()
    m = re.search(b'id="ref_(.*?)">(.*?)<', content)
    if m:
        quote = m.group(2)
    else:
        quote = 'no quote available for: ' + symbol
    return quote

返回:

b'655.65'

(655.65是Google股票的当前价格,这是我传入的符号)

我的问题是:有没有办法让我擦洗退货所以我只是得到没有b或报价的价格?理想情况下,我希望将它作为一个浮点数返回但是如果需要的话我可以将它作为字符串返回并在以后需要时将其转换为浮点数。

我引用了其他帖子:

How to create a stock quote fetching app in python

Python TypeError on regex

How to convert between bytes and strings in Python 3?

Convert bytes to a Python string

也许我错过了其中一件事,但我相信我已经尝试了所有我能找到的东西,它仍然以上面显示的格式返回。

解决 我遇到的问题是没有显示没有引号的字符串,而是我将值设置为字节文字,首先需要转换为字符串文字,然后转换为浮点数。我试过这个但是我在if语句之外尝试了这个(noob move)。解决方案如同v1k45建议: 在if语句中添加一行     quote = float(quote.decode('utf-8')) 解码并转换为浮动。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

if条件中添加一行:

        quote = float(quote.decode('utf-8'))

您必须将字节解码为unicode才能返回正确的字符串。使用float()将其转换为浮点数。