Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 28, 2012 21:09:12

asdf
От:
Зарегистрирован: 2012-02-12
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

urlopen forbidden

Доброго времени суток. Не получается получить страницу через urlopen

from urllib import urlopen
req = 'http://translate.google.com.ua/?hl=ru&tab=TT#'
conn = urlopen(req).read()
print conn
Получаю ошибку 403 мой клиент имеет недостаточно прав.
Вставляя этот url в броузер страница отображается. Таким же методом получал страницу www.google.com, тоесть код правильный. Как правильно написать url?



Офлайн

#2 Авг. 28, 2012 21:19:17

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

urlopen forbidden

Посмотрите заголовки при запросе из браузера. Скорее всего нужно добавить что-нибудь вроде user-agent.

И искренне советую использовать requests вместо urllib.



Отредактировано fata1ex (Авг. 28, 2012 21:19:27)

Офлайн

#3 Авг. 28, 2012 21:51:06

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

urlopen forbidden

fata1ex
requests
Или grab, там искаропки рандомный юзерагент и поддержка прокси (главный недостаток request).

Офлайн

#4 Авг. 28, 2012 23:25:35

EBFE
Зарегистрирован: 2012-07-03
Сообщения: 99
Репутация: +  20  -
Профиль   Отправить e-mail  

urlopen forbidden

>>> import urllib2
>>> opener = urllib2.build_opener()
>>> res = opener.open('http://translate.google.com.ua/?hl=ru&tab=TT#')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
...
HTTPError: HTTP Error 403: Forbidden
>>> opener.addheaders = [('User-agent', 'I am not Python!!!')]
>>> res = opener.open('http://translate.google.com.ua/?hl=ru&tab=TT#')
>>> print res.read()[100:150]
><meta name=keywords content="ïåðåâåñòè, ïåðåâîäû,

>>> import requests
>>> res = requests.get('http://translate.google.com.ua/?hl=ru&tab=TT#')
>>> res.status_code
200
>>> res.cookies
<<class 'requests.cookies.RequestsCookieJar'>[Cookie(version=0,
...
 rest={}, rfc2109=False)]>
>>> res.content[:50]
'<!DOCTYPE html><html><head><meta content="text/htm'
>>> res.encoding
'windows-1251'
>>> res.history
[]
>>> res.raw.get_redirect_location()
False

Офлайн

#5 Авг. 29, 2012 00:09:07

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

urlopen forbidden

Совсем гуглоиды охренели, не ожидал от них такой тупости.

Офлайн

#6 Авг. 29, 2012 07:50:46

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

urlopen forbidden

from grab import Grab
g = Grab()
g.go('http://translate.google.com.ua/?hl=ru&tab=TT#')
print g.response.code
print g.response.body



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#7 Авг. 29, 2012 14:40:30

mironich
От:
Зарегистрирован: 2011-05-23
Сообщения: 118
Репутация: +  2  -
Профиль   Отправить e-mail  

urlopen forbidden

Получаю ошибку 403 мой клиент имеет недостаточно прав.
Гугл отдает 403 даже за нестандартный User-Agent.



Офлайн

#8 Авг. 30, 2012 18:02:41

asdf
От:
Зарегистрирован: 2012-02-12
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

urlopen forbidden

Получил используя httplib

h = httplib.HTTPConnection('translate.google.com.ua')
h.request('GET',"/?hl=ru&tab=TT#")
r = h.getresponse()
print  r.read()
h.close()
Только разметка почему-то подпортилась(сохранил в файл затем открыл броузером). В чем причина?
Еще проблема с переводом - если написать
 h.request('GET',"/?hl=ru&tab=TT#/en/ru/egg") #перевод с англ. на рус. слова egg
То сервер присылает туже стараницу что и выше. Если ссылку вставить в броузер - отображается нужная страница.



Отредактировано asdf (Авг. 30, 2012 19:27:25)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version