Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2014 15:18:25

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

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

Здравствуйте!

Собственно urlopen отдает не всю страницу, а только небольшую часть причем принцип того сколько он отдает не понятен.
Код:

import codecs
from pyexcelerate import Workbook
import re
import string
#import urllib
from urllib.request import urlopen
f = open ("tmp.txt", "r") # тестовый адрес
for line in f.readlines():
     fi = urlopen(line.rstrip("\n"))
     for l in fi.readlines():
         html = html + str(l)

на выходе в html должна быть вся страница,но на практике только небольшая часть, 356 строк или около того, а должнобыть около 3300. Python 3.3, Windows XP SP3



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

Отредактировано Alex_HH (Март 3, 2014 17:00:31)

Офлайн

#2 Март 3, 2014 17:02:52

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

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

А почему так сложно?

for url in open('tmp.txt'):
    html = urlopen(url.strip()).read()

Ну и не забудьте обрабатывать Exception, если url прочитать не удалось. А ещё неплохо бы сделать socket.setdefaulttimeout иначе у вас программа может зависнуть, например, попробуйте прочитать URL http://google.com:81/

Отредактировано lorien (Март 3, 2014 17:03:15)

Офлайн

#3 Март 3, 2014 17:35:19

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

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

Спасибо, за простоту. Методом read() тоже пользовался отвтет тот же. Обработка исключения то само собой будет, но страница все равно не полностью получаеться.

привожу полный код скрипта и то как urlopen выдает страницу:

author__  = "Alex"
import codecs
from pyexcelerate import Workbook
import re
import string
import urllib
import socket
from urllib.request import urlopen
html=""
wb = Workbook()
ws = wb.new_sheet("1")
ws[1][1].value = "Category"
ws[1][2].value = "Sub Category"
ws[1][3].value = "Title"
ws[1][4].value = "Email"
ws[1][5].value = "City"
ws[1][6].value = "Address"
ws[1][7].value = "Description"
ws[1][8].value = "Image_URL"
#f = open("addres_READY.txt", "r") # боевые адреса
socket.setdefaulttimeout(5)
for url in open('tmp.txt'):
     html = urlopen(url.strip()).read()
     print(str(html, encoding='utf-8'))
     #member_card = re.search('<div id="about_member" class="blue_block".+?><div class="green_block">', html)
     member_card = re.search("<html>", str(html))
     member_card_text = member_card.group()
     print (member_card_text)
     
wb.save("output.xlsx")

сразу листайте в конец
python -u pers.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]-->
  
    <meta name='yandex-verification' content='4da92baa349ca23d' />
  <meta name="verify-v1" content="taBgEDjU0hLTc9xSUm7gaV343Ydk7ThQVTy4bT3a0g4=" >
  <base href="http://my-svadba.ru">
</head>
        <body class="  ">
  
  <!--LiveInternet counter--><script type="text/javascript"><!--
new Image().src = "//counter.yadro.ru/hit;mysvadba?r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"":
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";h"+escape(document.title.substring(0,80))+
";"+Math.random();//--></script><!--/LiveInternet-->
  <a href="/tender/create" id="tender_main_button"><img src="/images/1x1.gif" alt="оставить Заявку на услуги" /></a>
  <div id="wrapper">
    
<div id="flashbox" class="flashbox hidden_block">
  <ul>
              </ul>
  <a href="javascript:void(0)" href="javascript:void(0)" class='close' onclick="jQuery(this).parent().hide().find('ul').empty(); return false;">Закрыть</a>
</div>
    
    <div id="header">
      <div class="panel_tools">
                
          <!--noindex-->
<div id="select_city_container">
  <a href="#open-city-selector" rel="nofollow" class="other_city_link">
    <span class="other_city_link__label">Все города</span>
    <div class="decoration"></div>
  </a>
  <div style="display:none;">
    <div id="open-city-selector" class="city-selector popup_form popup_form_city-selector">
      <div class="popup_form_title">
        Моя свадьба в городе...
        <div class="popup_form_subtitle">Начните планирование свадьбы с выбора города</div>
      </div>
            <a href="http://my-svadba.ru/auth/reset_city/?return=http://my-svadba.ru" rel="nofollow" title="Все города" class="city-selector__all city_selector_link">Все города &raquo;</a>
      <div class="clearFix">
        <div class="city-selector__col">
          <dl class="city-selector__list">
            
              
                <dt>А</dt>
                                
                  
                                    <dd>
                    <a href="http://abakan.my-svadba.ru" rel="nofollow" title="Абакан" class="city_selector_link">
                      Абакан
                      <input type="hidden" value="15" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://Napa.my-svadba.ru" rel="nofollow" title="Айя-Напа" class="city_selector_link">
                      Айя-Напа
                      <input type="hidden" value="203" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://alma-ata.my-svadba.ru" rel="nofollow" title="Алма-Ата" class="city_selector_link">
                      Алма-Ата
                      <input type="hidden" value="171" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://almetevsk.my-svadba.ru" rel="nofollow" title="Альметьевск" class="city_selector_link">
                      Альметьевск
                      <input type="hidden" value="212" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://anapa.my-svadba.ru" rel="nofollow" title="Анапа" class="city_selector_link">
                      Анапа
                      <input type="hidden" value="215" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://armavir.my-svadba.ru" rel="nofollow" title="Армавир" class="city_selector_link">
                      Армавир
                      <input type="hidden" value="238" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://arhangelsk.my-svadba.ru" rel="nofollow" title="Архангельск" class="city_selector_link">
                      Архангельск
                      <input type="hidden" value="24" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://astrahan.my-svadba.ru" rel="nofollow" title="Астрахань" class="city_selector_link">
                      Астрахань
                      <input type="hidden" value="25" />
                    </a>
                  </dd>
                  
                
              
                <dt>Б</dt>
                                
                  
                                    <dd>
                    <a href="http://baku.my-svadba.ru" rel="nofollow" title="Баку" class="city_selector_link">
                      Баку
                      <input type="hidden" value="77" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://balakovo.my-svadba.ru" rel="nofollow" title="Балаково" class="city_selector_link">
                      Балаково
                      <input type="hidden" value="201" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://baranovichi.my-svadba.ru" rel="nofollow" title="Барановичи" class="city_selector_link">
                      Барановичи
                      <input type="hidden" value="130" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://barnaul.my-svadba.ru" rel="nofollow" title="Барнаул" class="city_selector_link">
                      Барнаул
                      <input type="hidden" value="17" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://belgorod.my-svadba.ru" rel="nofollow" title="Белгород" class="city_selector_link">
                      Белгород
                      <input type="hidden" value="26" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://berlin.my-svadba.ru" rel="nofollow" title="Берлин" class="city_selector_link">
                      Берлин
                      <input type="hidden" value="84" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://biysk.my-svadba.ru" rel="nofollow" title="Бийск" class="city_selector_link">
                      Бийск
                      <input type="hidden" value="194" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://blagoveschensk.my-svadba.ru" rel="nofollow" title="Благовещенск" class="city_selector_link">
                      Благовещенск
                      <input type="hidden" value="23" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://bobruysk.my-svadba.ru" rel="nofollow" title="Бобруйск" class="city_selector_link">
                      Бобруйск
                      <input type="hidden" value="122" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://bratsk.my-svadba.ru" rel="nofollow" title="Братск" class="city_selector_link">
                      Братск
                      <input type="hidden" value="210" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://bryansk.my-svadba.ru" rel="nofollow" title="Брянск" class="city_selector_link">
                      Брянск
                      <input type="hidden" value="27" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://budapesht.my-svadba.ru" rel="nofollow" title="Будапешт" class="city_selector_link">
                      Будапешт
                      <input type="hidden" value="82" />
                    </a>
                  </dd>
                  
                
              
                <dt>В</dt>
                                
                  
                                    <dd>
                    <a href="http://velikieluki.my-svadba.ru" rel="nofollow" title="Великие Луки" class="city_selector_link">
                      Великие Луки
                      <input type="hidden" value="190" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://velikiynovgorod.my-svadba.ru" rel="nofollow" title="Великий Новгород" class="city_selector_link">
                      Великий Новгород
                      <input type="hidden" value="222" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://vladivostok.my-svadba.ru" rel="nofollow" title="Владивосток" class="city_selector_link">
                      Владивосток
                      <input type="hidden" value="20" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://vladikavkaz.my-svadba.ru" rel="nofollow" title="Владикавказ" class="city_selector_link">
                      Владикавказ
                      <input type="hidden" value="11" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://vladimir.my-svadba.ru" rel="nofollow" title="Владимир" class="city_selector_link">
                      Владимир
                      <input type="hidden" value="28" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://volgograd.my-svadba.ru" rel="nofollow" title="Волгоград" class="city_selector_link">
                      Волгоград
                      <input type="hidden" value="29" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://vologda.my-svadba.ru" rel="nofollow" title="Вологда" class="city_selector_link">
                      Вологда
                      <input type="hidden" value="30" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://voronezh.my-svadba.ru" rel="nofollow" title="Воронеж" class="city_selector_link">
                      Воронеж
                      <input type="hidden" value="31" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://voskresensk.my-svadba.ru" rel="nofollow" title="Воскресенск" class="city_selector_link">
                      Воскресенск
                      <input type="hidden" value="125" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://votkinsk.my-svadba.ru" rel="nofollow" title="Воткинск" class="city_selector_link">
                      Воткинск
                      <input type="hidden" value="264" />
                    </a>
                  </dd>
                  
                
              
                <dt>Г</dt>
                                
                  
                                    <dd>
                    <a href="http://gannover.my-svadba.ru" rel="nofollow" title="Ганновер" class="city_selector_link">
                      Ганновер
                      <input type="hidden" value="123" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://gelendzhik.my-svadba.ru" rel="nofollow" title="Геленджик" class="city_selector_link">
                      Геленджик
                      <input type="hidden" value="216" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://gorno-altaysk.my-svadba.ru" rel="nofollow" title="Горно-Алтайск" class="city_selector_link">
                      Горно-Алтайск
                      <input type="hidden" value="2" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://groznyy.my-svadba.ru" rel="nofollow" title="Грозный" class="city_selector_link">
                      Грозный
                      <input type="hidden" value="67" />
                    </a>
                  </dd>
                  
                
              
                <dt>Д</dt>
                                
                  
                                    <dd>
                    <a href="http://Dzerjinsk.my-svadba.ru" rel="nofollow" title="Дзержинск" class="city_selector_link">
                      Дзержинск
                      <input type="hidden" value="259" />
                    </a>
                  </dd>
                  
                                    <dd>
                    <a href="http://dnepropetrovsk.my-svadba.ru" rel="nofollow" title="Днепропетровск" class="city_selector_link">
                      Днепропетровск
                      <input type="hidden" value="126" />
                    </a>
                  </dd>
                  
                                    <dd>
   
<html>
<<< Process finished. (Exit code 0)
================ READY ================



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

Отредактировано Alex_HH (Март 3, 2014 17:50:25)

Офлайн

#4 Март 3, 2014 18:41:48

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

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

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

Офлайн

#5 Март 3, 2014 19:09:52

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

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

Не вопрос, очень даже легко.
код:

from urllib.request import urlopen
html = urlopen("http://my-svadba.ru/company/item/59109/#3|2014").read()
print(str(html, encoding='utf-8'))

должно получить весь код страницы, но приходит только процентов десять, вывод того что приходит показан постом выше



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

Отредактировано Alex_HH (Март 3, 2014 20:00:21)

Офлайн

#6 Март 3, 2014 20:16:32

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

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

Alex_HH
должно получить весь код страницы, но приходит только процентов десять
аналогично
на обоих питонах приходит 357 строк, хотя в браузере страница целая



Офлайн

#7 Март 3, 2014 20:24:11

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

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

Вероятно защита от ботов на сервере.
Сделайте такой-же http-заголовок как и в браузере. + сохраните куки на всякий пожарный.

Отредактировано o7412369815963 (Март 3, 2014 20:26:22)

Офлайн

#8 Март 3, 2014 20:25:34

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

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

странно, я был бы рад ошибке или пустому ответу, тут сразу ясно, я лох, и надо читать что то. а тут странно, не могу понять я лох или меня сервре разводит, или…
вобщем куда бежать и что делать?



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

Офлайн

#9 Март 3, 2014 20:26:32

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

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

o7412369815963
Вероятно защита от ботов на сервере.Сделайте такой-же http-заголовок как и в браузере.

если не сложно примерчик, а то я уже сегодня весь обгуглился. буду очень признателен.



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

Офлайн

#10 Март 3, 2014 20:33:45

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

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

вот http://www.python-requests.org/en/latest/user/quickstart/#custom-headers

список параметров возмите у себя из браузера:

Host:my-svadba.ru
Pragma:no-cache
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36
...

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version