2015-08-13 4 views
0

Я довольно новичок в питоне и программировании в целом. В настоящее время я работаю над сценарием, чтобы скопировать котировки акций из финансов Google. Вот мой код:Google скребок 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 или котировки? В идеале я бы хотел, чтобы он возвращался как float, но при необходимости я могу вернуть его как строку и преобразовать его в float, когда мне это нужно позже.

Я ссылаюсь эти другие сообщения:

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

Возможно, я что-то пропустил в одном из тех, но я верю, я попробовал все, что мог найти, и все еще ret urning в формате, показанном выше.

решаемых Проблемы у меня был не отображать строку без кавычек, это было то, что я имел значение, установленное в бай буквальную, что необходимо, чтобы сначала быть преобразовано в строку буквальной, а затем к поплавку. Я пробовал это, но я пробовал это за пределами инструкции if (noob move). решение было предложено как v1k45: добавить строку в оператор if quote = float (quote.decode ('utf-8')) , чтобы декодировать его и преобразовать в float.

благодарит за помощь!

+2

Возможный дубликат [Python return without "'] (http://stackoverflow.com/questions/1482649/python-return-without) –

ответ

1

Добавить строку в состоянии if:

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

Вы должны декодировать байты в юникод вернуть правильную строку. Используйте float(), чтобы преобразовать его в float.

+0

Это позаботилось об этом! благодаря! Я знал, как конвертировать в float, и я пробовал расшифровать его, но я делал это за пределами оператора if, который теперь имеет смысл, почему он не работает LOL. –

+0

вот почему я предпочитаю 2,7 свыше 3 за грязные работы: D – v1k45