Уведомления

Группа в Telegram: @pythonsu

#1 Июль 14, 2015 21:27:44

Unnamed001
Зарегистрирован: 2015-01-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

Здравствуйте, занимаюсь самообразованием, подскажите пожалуйста.

Как я понял, через socket работает практически все (или даже все), мне нужно сделать parse веб-страницы используя socket (точнее просто получить всю страничку, чтобы дальше с ней работать), но при реализации столкнулся с трудностями:

import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("diz-cs.ru", 80))
s.send("GET / HTTP/1.0\r\n\r\n")
buf = s.recv(100000)
sys.stdout.write(buf)
s.close()

В итоге, сервер почему ничего не отдает, кроме заголовка с ответом:

HTTP/1.1 404 Not Found
 Server: uServ/3.2.2
Date: Tue, 14 Jul 2015 18:25:05 GMT
Content-Type: text/html; charset=UTF-8
Connection: close

Знаю, что для таких целей можно использовать urllib, httplib. Но подскажите, пожалуйста, как используя socket можно сделать?

Офлайн

#2 Июль 14, 2015 22:31:29

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

Чтить HTTP

s.send('GET / HTTP/1.0\r\nHost: diz-cs.ru\r\n\r\n')

Отредактировано Shaman (Июль 14, 2015 22:33:08)

Офлайн

#3 Июль 14, 2015 22:35:17

Unnamed001
Зарегистрирован: 2015-01-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

Shaman
Чтить HTML
Спасибо за подсказку, а как быть если при отправке запроса, получаем ответ “Please enable cookies” от сайта?

Офлайн

#4 Июль 14, 2015 22:42:18

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

Обрабатывать Set-Cookie и Cookie.

Офлайн

#5 Июль 14, 2015 22:47:30

Unnamed001
Зарегистрирован: 2015-01-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

Shaman
Обрабатывать Set-Cookie и Cookie.
Не затруднит, пожалуйста показать на примере?

Офлайн

#6 Июль 14, 2015 22:52:01

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

Так мы до интерпретации яваскриптов докатимся. Нет, Вам пока полезнее будет лично поразбираться.

Офлайн

#7 Июль 14, 2015 22:57:31

Unnamed001
Зарегистрирован: 2015-01-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

Shaman
Так мы до интерпретации яваскриптов докатимся. Нет, Вам пока полезнее будет лично поразбираться.

Так мне не нужно обрабатывать эти куки, а просто показать серверу, что я их принимаю, чтобы он отдал мне страничку.

Офлайн

#8 Июль 14, 2015 23:20:34

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

В бородатые годы, когда мне нужно было узнать как работать с каким-нибудь интерфейсом, а ни литературы, ни гуров с интернетами под рукой не было, приходилось дизассемблировать чужие екзешники. Вы так тоже сможете.

Офлайн

#9 Июль 14, 2015 23:54:38

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

Unnamed001
но вы же самообразованием занимаетесь - посмотрите на спецификацию HTML в частности на заголовки в GET запросе касательно того как показать серверу что вы принимаете куки. Ничего сложного. Просто немного погуглить и почитать.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Июль 15, 2015 00:05:36

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Как правильно делать parse веб-страниц используя Socket

Unnamed001
Не затруднит, пожалуйста показать на примере?

Очередная жертва формального образования. Выздоравливай, всё в твоих руках.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version