Форум сайта python.su
Здравствуйте!
Собственно 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)
Отредактировано Alex_HH (Март 3, 2014 17:00:31)
Офлайн
А почему так сложно?
for url in open('tmp.txt'): html = urlopen(url.strip()).read()
Отредактировано lorien (Март 3, 2014 17:03:15)
Офлайн
Спасибо, за простоту. Методом 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">Все города »</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 ================
Отредактировано Alex_HH (Март 3, 2014 17:50:25)
Офлайн
Я слабо понимаю, что делает этот код. Дайте минимальный код, который повторяет проблему. *минимальный* Там должно быть пара строчек кода.
Офлайн
Не вопрос, очень даже легко.
код:
from urllib.request import urlopen html = urlopen("http://my-svadba.ru/company/item/59109/#3|2014").read() print(str(html, encoding='utf-8'))
Отредактировано Alex_HH (Март 3, 2014 20:00:21)
Офлайн
Alex_HHаналогично
должно получить весь код страницы, но приходит только процентов десять
Офлайн
Вероятно защита от ботов на сервере.
Сделайте такой-же http-заголовок как и в браузере. + сохраните куки на всякий пожарный.
Отредактировано o7412369815963 (Март 3, 2014 20:26:22)
Офлайн
странно, я был бы рад ошибке или пустому ответу, тут сразу ясно, я лох, и надо читать что то. а тут странно, не могу понять я лох или меня сервре разводит, или…
вобщем куда бежать и что делать?
Офлайн
o7412369815963
Вероятно защита от ботов на сервере.Сделайте такой-же http-заголовок как и в браузере.
Офлайн
вот 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 ...
Офлайн