Python 3 намного строже, когда речь идет о разнице между байтами и строками (Unicode). Результат urlopen(...).read(...)
, конечно, является объектом типа bytes
, а реализация bytes.find
не позволяет вам искать строки Unicode. В вашем случае вы можете просто заменить «ценовую упаковку» на двоичную строку:
idx_pricewrap = b.find(b'pricewrap')
То же самое относится и к другим .find
звонкам. Python 2 кодировал строки Unicode автоматически, где это имело (меньше или больше) смысл, но Python 3 ввел больше ограничений, о которых вам нужно знать.