Python urllib2 следует 3xx перенаправления для получения заключительного содержания. Существует ли способ сделать urllib2 (или некоторая другая библиотека, такая как httplib2) также следуют за обновлениями meta? Или я должен проанализировать HTML вручную для метатегов обновления?
Хорошо, похоже, ни одна библиотека не поддерживает это, поэтому я использовал этот код:
import urllib2
import urlparse
import re
def get_hops(url):
redirect_re = re.compile('<meta[^>]*?url=(.*?)["\']', re.IGNORECASE)
hops = []
while url:
if url in hops:
url = None
else:
hops.insert(0, url)
response = urllib2.urlopen(url)
if response.geturl() != url:
hops.insert(0, response.geturl())
# check for redirect meta tag
match = redirect_re.search(response.read())
if match:
url = urlparse.urljoin(url, match.groups()[0].strip())
else:
url = None
return hops
Используйте BeautifulSoup или lxml для анализа HTML.