Найти - Пользователи
Полная версия: Сокет http
Начало » Python для новичков » Сокет http
1 2 3
Egor2010
Добрый день.
Можно ли заменить urllib.urlopen на сокет?
Чтобы скачивал html и показывал его код.
Если да то как?
dimy44
# -*- 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)
  
Egor2010
Спасибо
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?
есть ли технологии похожии на сокеты?
dimy44
что за load?
Вы код смотрели? Найдите в коде где выводится load и гляньте, что он выводит. Это схематично показано, что там можно организовать прогресс-бар загрузки контента, взяв конечный размер из заголовка (Content-Length)
Egor2010
Я только сейчас за гуглил что такое процесс бар до этого не знал
Есть ли аналоги сокетов?
dimy44
Аналоги для чего, какие задачи ? Сокет ведь много где используется, не только для интернета.
Egor2010
Задачи : соединение компьютеров через сеть, передача данных
dimy44
Для клиент-сервер есть библиотека Twisted. Вы бы погуглили чтоли, да и выбрали, что вам подходит…
Egor2010
Я о другом сама 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&amp;ei=rK5kVL_fCdeCtAHs8YDwAg">here</A>.
</BODY></HTML>
в чем проблема ?
 302 Found, 302 Moved Temporarily — запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, при управляемом сервером согласовании содержимого. Некоторые клиенты некорректно ведут себя при обработке данного кода. Введено в HTTP/1.0.
dimy44
Где проблема?
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