Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2014 21:01:23

Alex_HH
Зарегистрирован: 2014-03-03
Сообщения: 91
Репутация: +  13  -
Профиль   Отправить e-mail  

Urlopen отдает не всю старницу

o7412369815963
вот http://www.python-requests.org/en/latest/user/quickstart/#custom-headersсписок параметров возмите у себя из браузера:
Большое спасибо!
А стандартной бибилиотекой такое провернуть можжно?

пс. мне скачать и установить не лень, просто интересно.



————–
Зимой и летом heavy metall.
Технический прогресс - это падение вверх. Alex_HH (с)
Эстетизация жестокости есть квинтэссенция смысла человеческого существования. Alex_HH (с)
После бога идет не пустота, там метаданные. Alex_HH (с)

Офлайн

#2 Март 3, 2014 22:11:29

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

Urlopen отдает не всю старницу

>>> import urllib.request
>>> 
>>> headers = {
...     'Host': 'my-svadba.ru',
...     'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:27.0) Gecko/20100101 Firefox/27.0',
...     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
...     'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
...     #'Accept-Encoding': 'gzip, deflate',
...     #'DNT': '1',
...     #'Connection': 'keep-alive'
... }
>>> 
>>> r = urllib.request.Request(
...     'http://my-svadba.ru/company/item/59109/#3|2014',
...     headers=headers
... )
>>> 
>>> data = urllib.request.urlopen(r)
>>> html = data.read().decode(data.headers.get_content_charset() or 'utf-8')
>>> 
>>> print(html[:100], html[-200:], sep='\n\t***\n')
 
 
 
 
 
 
 
 
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/
        ***
               Днепропетровск
                      <input type="hidden" value="126" />
                    </a>
                  </dd>
                  
                                    <dd>
   
>>>



Отредактировано py.user.next (Март 3, 2014 22:14:39)

Офлайн

#3 Март 3, 2014 22:58:53

Alex_HH
Зарегистрирован: 2014-03-03
Сообщения: 91
Репутация: +  13  -
Профиль   Отправить e-mail  

Urlopen отдает не всю старницу

все равно не работатет. я ему даже куки скормил, не работает.
py.user.next Ваш код тоже выдает не до конца текст, как и мой.

import urllib.request
 
headers = { 
        'Host': 'my-svadba.ru',
        'User-Agent': 'Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0',
        'Accept':'Language: ru-ru,ru;q=0.8,uk;q=0.6,en-us;q=0.4,en;q=0.2',
        'Accept':'Encoding: gzip, deflate',
        'Cookie': '_ym_visorc_157614=w; PHPSESSID=72pm17q9m55qt5d88kca1ebnn1',
        'Connection': 'keep-alive',
        'Cache-Control': 'max-age=0',
        }
r = urllib.request.Request('http://my-svadba.ru/company/item/59109/#3|2014',headers=headers)
 
data = urllib.request.urlopen(r)
html = data.read()#.decode(data.headers.get_content_charset() or 'utf-8')
 
#print(html)
print(html[:100], html[-200:], sep='\n\t***\n')



————–
Зимой и летом heavy metall.
Технический прогресс - это падение вверх. Alex_HH (с)
Эстетизация жестокости есть квинтэссенция смысла человеческого существования. Alex_HH (с)
После бога идет не пустота, там метаданные. Alex_HH (с)

Офлайн

#4 Март 4, 2014 00:40:13

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

Urlopen отдает не всю старницу

это из-за
Connection: close

python.org. urllib.request

urllib.request module uses HTTP/1.1 and includes Connection:close header in its HTTP requests.

Firefox отправляет keep-alive, а питон отправляет close (даже если ставишь keep-alive)
(посмотрел через wireshark)

add
не, там ещё запутаннее, keep-alive тоже не помогает
(через netcat проверил)



Отредактировано py.user.next (Март 4, 2014 04:32:12)

Офлайн

#5 Март 4, 2014 09:52:12

Alex_HH
Зарегистрирован: 2014-03-03
Сообщения: 91
Репутация: +  13  -
Профиль   Отправить e-mail  

Urlopen отдает не всю старницу

Победа! Victory!
Заработатло!
o7412369815963, Ваш совет помог, большое спасибо!
py.user.next, спасибо за инфу!
Всем остальным тоже огромное спасибо!
Работает даже без отправки заголовков, так что py.user.next, Ваше замечание верно на все 200%
привожу скрипт и его вывод. юху, круто, тему можно закрывать.

скрипт:

import urllib.request
import requests
import json
url = 'http://my-svadba.ru/company/item/59109'
payload = {'some': 'data'}
headers = { 
        'Host': 'my-svadba.ru',
        'User-Agent': 'Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0',
        'Accept':'Language: ru-ru,ru;q=0.8,uk;q=0.6,en-us;q=0.4,en;q=0.2',
        'Accept':'Encoding: gzip, deflate',
        'Cookie': '_ym_visorc_157614=w; PHPSESSID=72pm17q9m55qt5d88kca1ebnn1',
        'Connection': 'keep-alive',
        'Cache-Control': 'max-age=0',
          }
r = requests.get(url, data=json.dumps(payload), headers=headers)
print(r.content.decode('utf-8'))

результат работы:
python -u 544544546.py
Process started >>>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Powered by LIMB | http://www.limb-project.com/ -->
<!-- Designed by BIT | http://www.bit-creative.com/ -->
<html>
<head>
  <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
  <title>
        Сергей и Алина Казины — фото и видео Пенза Портфолио
  </title>
  <meta name="description" content="Скидки на бронирование фото и видео до 1.04.
В мае и июне фотокнига в подарок">
  <meta name="keywords" content="Фотографы, Студийная фотосъемка, Видеографы, Пенза, Саранск, Самара, Саратов, Москва, Тольятти, Сергей и Алина Казины — фото и видео">
  <link rel="stylesheet" type="text/css" href="/styles/main.css?2013-07-08" />
  <link rel="stylesheet" type="text/css" href="/styles/jquery-ui.css?2013-07-08" />
  <link rel="stylesheet" type="text/css" href="/styles/fancybox.css?2013-07-08" />
  <!--[if lt IE 8]><link rel="stylesheet" type="text/css" href="/styles/ie.css?2013-07-08" /><![endif]-->
  <!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="/styles/ie6.css?2013-07-08" /><![endif]-->
  
------*****тут вырезанно мною****-----
  </script>
  <!-- Yandex.Metrika counter -->
<div style="display:none;"><script type="text/javascript">
(function(w, c) {
    (w[c] = w[c] || []).push(function() {
        try {
            w.yaCounter157614 = new Ya.Metrika({id:157614, enableAll: true, webvisor:true});
        }
        catch(e) { }
    });
})(window, "yandex_metrika_callbacks");
</script></div>
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
<noscript><div><img src="//mc.yandex.ru/watch/157614" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</body>
</html>
<<< Process finished. (Exit code 0)
================ READY ================



————–
Зимой и летом heavy metall.
Технический прогресс - это падение вверх. Alex_HH (с)
Эстетизация жестокости есть квинтэссенция смысла человеческого существования. Alex_HH (с)
После бога идет не пустота, там метаданные. Alex_HH (с)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version