Следующий URL (и другие подобные ему) можно открыть в браузере, но при этом urllib2.urlopen выдает исключение 404: http://store.ovi.com/#/applications?categoryId=20&fragment=1&page=1
geturl () возвращает тот же URL (без перенаправления). Заголовки скопированы и вставлены из firebug. Я попытался передать заголовки в качестве словаря для запроса, но получил тот же результат. wget открывает URL в консоли, но не из скрипта.
код:
source_url = 'http://store.ovi.com/#/applications?categoryId=20&fragment=1&page=2'
попробуй:
socket.setdefaulttimeout(10)
hdrs = [('Host','store.ovi.com'),('User-Agent','Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US;rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13 AppEngine-Google;(+http://code.google.com/appengine)'),('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),('Accept-Language','en-us,en;q=0.5'),('Accept-Encoding','gzip,deflate'),('Accept-Charset','ISO-8859-1,utf-8;q=0.7,*;q=0.7'),('Keep-Alive','115'),('Connection','keep-alive'),('Cookie','JNPRSESSID=4u4devdrt7eb6e0qem3gin47i2; s_cc=true; undefined_s=First%20Visit; s_nr=1282817443274; s_sq=%5B%5BB%5D%5D; view=Grid; menu=menuOpen; OVI_DEVICE=b5130'),('Cache-Control','max-age=0')]
ree = urllib2.Request(source_url)
ree.addheaders = hdrs
opener = urllib2.build_opener()
htmlSource = opener.open(ree).read()
кроме urllib2.HTTPError, e:
print e.code
print e.msg
print e.headers
Вывод ошибки:
404
Не найдено
Дата: сб, 28 августа 2010 00:36:57 GMT
Сервер: Apache / 2.2.3 (Red Hat)
X-Powered-By: PHP / 5.2.2
Истекает: четверг, 19 ноября 1981 г., 08:52:00 по Гринвичу
Cache-Control: нет хранилища, нет кэша, необходимо повторно проверить, после проверки = 0, предварительная проверка = 0
Прагма: без кеша
Keep-Alive: тайм-аут = 7, макс = 333
Подключение: Keep-Alive
Передача-кодировка: чанки
Content-Type: text / html; кодировка = UTF-8
Что, если что, я делаю неправильно? Это ошибка? И если так, есть ли обходной путь? Спасибо!