Найти - Пользователи
Полная версия: Где ошибка?
Начало » Python для новичков » Где ошибка?
1
aol74
Есть простой сценарий выдаёт ошибку:
i = sk.find('href="')
TypeError: expected an object with the buffer interface

import urllib.request
u = urllib.request.urlopen('http://python.su/')
h = u.fileno()
s = 0
while s != h:
sk = next(u)
i = sk.find('href="')
if i != -1:
print(sk[i:len(sk)])
s = s + 1
Почему возникает ошибка, видно что не совпадение типов, но вроде всё совпадает везде числа, да и принцип полиморфизма. Укажите на мою ошибку.
dissdoc
Сразу скажу. Смотри сюда i = sk.find('href="')
Подумай, почему кавычки не срабатывают! ;)
aol74
Ну есть предположение что в содержимом sk есть кавычки и они рвут полностью всё выражение, ну это на правах бреда. В других языках кавычка в строке не рвёт выражение. Как быть удалять кавычки из строки перед поиском?
py.user.next
ты в bytes ищешь str

так
    sk = next(u)
i = sk.find(b'href="')
или так
    sk = next(u).decode('utf-8')
i = sk.find('href="')
и s += 1 перемести в if
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB