Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 26, 2011 17:48:48

aol74
От:
Зарегистрирован: 2011-11-25
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Где ошибка?

Есть простой сценарий выдаёт ошибку:
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
Почему возникает ошибка, видно что не совпадение типов, но вроде всё совпадает везде числа, да и принцип полиморфизма. Укажите на мою ошибку.



Офлайн

#2 Ноя. 26, 2011 18:18:20

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Где ошибка?

Сразу скажу. Смотри сюда i = sk.find('href="')
Подумай, почему кавычки не срабатывают! ;)



Офлайн

#3 Ноя. 26, 2011 18:46:01

aol74
От:
Зарегистрирован: 2011-11-25
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Где ошибка?

Ну есть предположение что в содержимом sk есть кавычки и они рвут полностью всё выражение, ну это на правах бреда. В других языках кавычка в строке не рвёт выражение. Как быть удалять кавычки из строки перед поиском?



Офлайн

#4 Ноя. 26, 2011 20:48:37

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Где ошибка?

ты в bytes ищешь str

так

    sk = next(u)
i = sk.find(b'href="')
или так
    sk = next(u).decode('utf-8')
i = sk.find('href="')
и s += 1 перемести в if



Отредактировано (Ноя. 26, 2011 20:54:35)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version