Найти - Пользователи
Полная версия: Urlopen отдает не всю старницу
Начало » Python для новичков » Urlopen отдает не всю старницу
1 2
Alex_HH
Здравствуйте!

Собственно 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
lorien
А почему так сложно?

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

Ну и не забудьте обрабатывать Exception, если url прочитать не удалось. А ещё неплохо бы сделать socket.setdefaulttimeout иначе у вас программа может зависнуть, например, попробуйте прочитать URL http://google.com:81/
Alex_HH
Спасибо, за простоту. Методом 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 ================
lorien
Я слабо понимаю, что делает этот код. Дайте минимальный код, который повторяет проблему. *минимальный* Там должно быть пара строчек кода.
Alex_HH
Не вопрос, очень даже легко.
код:
from urllib.request import urlopen
html = urlopen("http://my-svadba.ru/company/item/59109/#3|2014").read()
print(str(html, encoding='utf-8'))

должно получить весь код страницы, но приходит только процентов десять, вывод того что приходит показан постом выше
py.user.next
Alex_HH
должно получить весь код страницы, но приходит только процентов десять
аналогично
на обоих питонах приходит 357 строк, хотя в браузере страница целая
o7412369815963
Вероятно защита от ботов на сервере.
Сделайте такой-же http-заголовок как и в браузере. + сохраните куки на всякий пожарный.
Alex_HH
странно, я был бы рад ошибке или пустому ответу, тут сразу ясно, я лох, и надо читать что то. а тут странно, не могу понять я лох или меня сервре разводит, или…
вобщем куда бежать и что делать?
Alex_HH
o7412369815963
Вероятно защита от ботов на сервере.Сделайте такой-же http-заголовок как и в браузере.

если не сложно примерчик, а то я уже сегодня весь обгуглился. буду очень признателен.
o7412369815963
вот 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
...
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