Форум сайта python.su
0
Добрый день.
Можно ли заменить urllib.urlopen на сокет?
Чтобы скачивал html и показывал его код.
Если да то как?
Офлайн
# -*- coding: utf-8 -*- import socket def load_page(url): host, url=url.split('/', 1) client=socket.socket(socket.AF_INET, socket.SOCK_STREAM,0) client.connect((socket.gethostbyname(host), 80)) print('ok connect') client.send('GET /{0} HTTP/1.0\r\nHost: {1}\r\nUser-agent: Python\r\n\r\n'.format(url, host)) string = client.recv(1024).split('\r\n') for t in range(len(string)): if not string[t] or string[t].isspace(): break print('\r\n'.join(string[:t+1])) # Header string=['\r\n'.join(string[t+1:])] while True: t = client.recv(1024) if not t: break print('load {0} byte'.format(len(t))) string.append(t) return ''.join(string) if __name__=='__main__': page = load_page('python.su/') print(page)
Офлайн
0
Спасибо
HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Thu, 13 Nov 2014 00:51:35 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 79776
Connection: close
Vary: Accept-Encoding
Vary: Cookie
load 424 byte
load 1024 byte
load 1024 byte
Офлайн
что за load?Вы код смотрели? Найдите в коде где выводится load и гляньте, что он выводит. Это схематично показано, что там можно организовать прогресс-бар загрузки контента, взяв конечный размер из заголовка (Content-Length)
Офлайн
0
Я только сейчас за гуглил что такое процесс бар
до этого не знал
Есть ли аналоги сокетов?
Отредактировано Egor2010 (Ноя. 22, 2016 15:56:00)
Офлайн
Аналоги для чего, какие задачи ? Сокет ведь много где используется, не только для интернета.
Офлайн
0
Задачи : соединение компьютеров через сеть, передача данных
Отредактировано Egor2010 (Ноя. 13, 2014 11:51:36)
Офлайн
Для клиент-сервер есть библиотека Twisted. Вы бы погуглили чтоли, да и выбрали, что вам подходит…
Офлайн
0
Я о другом сама twisted это только Python а сокеты во многих языках есть.
ok connect
HTTP/1.0 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.ru/?gfe_rd=cr&ei=rK5kVL_fCdeCtAHs8YDwAg
Content-Length: 258
Date: Thu, 13 Nov 2014 13:14:20 GMT
Server: GFE/2.0
Alternate-Protocol: 80:quic,p=0.002
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.ru/?gfe_rd=cr&ei=rK5kVL_fCdeCtAHs8YDwAg">here</A>.
</BODY></HTML>
302 Found, 302 Moved Temporarily — запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, при управляемом сервером согласовании содержимого. Некоторые клиенты некорректно ведут себя при обработке данного кода. Введено в HTTP/1.0.
Офлайн