Urllib2 мобильный пользовательский агент - PullRequest
0 голосов
/ 27 октября 2011

Если я использую Urllib2, чтобы открыть URL-адрес, используя это:

import urllib
import urllib2

url = 'http://www.bbc.co.uk'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {}
headers = { 'User-Agent' : user_agent }

data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()

Все отлично работает

Но я хочу мобильную версию, поэтому я установил для user-agent:

user_agent = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5'

Это то, с чем возвращается мой iphone при переходе на тестовую страницу и чтении ее заголовков

Однако, если я запускаю приведенный выше код с пользовательским агентом, настроенным на этот urllib, выходит из себя и кажетсяследовать неопределенному циклу перенаправления 302. Это не происходит, когда я захожу на сайт на моем iphone.

urllib2 возвращается с целой кучей отладочной информации, показывающей, что он следит за партиями 302, а затем, наконец:

urllib2.HTTPError: HTTP Error 301: The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
Moved Permanently

Любые идеи будут с благодарностью приняты.

1 Ответ

1 голос
/ 27 октября 2011

Ваша проблема - перенаправление ответов на ваш запрос.

Попробуйте эту библиотеку, чтобы помочь вам обработать URL перенаправления:

http://pypi.python.org/pypi/requests/0.7.3 или http://wwwsearch.sourceforge.net/mechanize/

...