Я прочитал некоторые из примеров здесь, но я такой новичок я не понимаю, некоторые из них и другие, похоже, не работает (возможно, потому, что я такой новичок, но ...Bytes to String или String to Bytes?
import urllib.request
import re
Symbols = ['aapl', 'spy' , 'goog' , 'nflx']
i = 0
while i < len(Symbols):
Yahoo='http://finance.yahoo.com/q?s=' + Symbols[i]
htmlfile = urllib.request.urlopen(Yahoo)
htmltext = htmlfile.read()
string = Symbols[i]
symbol = string.encode('utf-8')
pattern= re.compile(b'<span id="yfs_l84_'+ symbol +'">(.+?)</span>')
price= re.findall(pattern, htmltext)
print('The price of' + str(Symbols[i]) + ' is ' + str(price))
i+=1
Это не работает, потому что в re.compile
заявления я пытаюсь конкатенациями ули и байты.
Мне нужно преобразовать строку в байты, так что я могу позже перебрать список символов и скрести последнюю цену акции от yahoo finance.
У меня такое ощущение, что в моем синтаксисе есть что-то не так d в примерах и документации на python есть аргумент для «кодирования», который, я думаю, является строкой «utf-8», но я действительно не знаю.
Может кто-нибудь помочь мне с этим?
Редактировать: Я использую Bytes здесь, потому что это единственный способ, которым это работает, я получаю ошибку, чтобы изменить его на байты, если я этого не делаю (я использую 3.3).
Ошибка заключается в следующем:
Traceback (most recent call last):
File "C:\Users\Deaven And Teigan\Documents\Python Projects\YahooFinance.py", line 14, in <module>
pattern= re.compile(b'<span id="yfs_l84_'+ symbol +'">(.+?)</span>')
TypeError: can't concat bytes to str
Почему вы создаете регулярное выражение с байтовой строкой? Кроме того, отправьте трассировку стека и исключение с вашим вопросом. –
@Lattyware, TypeError: не может использовать шаблон строки для объекта с байтовым изображением –