как следовать за обновлениями meta в Python

Python urllib2 следует 3xx перенаправления для получения заключительного содержания. Существует ли способ сделать urllib2 (или некоторая другая библиотека, такая как httplib2) также следуют за обновлениями meta? Или я должен проанализировать HTML вручную для метатегов обновления?

10
задан hoju 23 February 2010 в 13:31
поделиться

2 ответа

Хорошо, похоже, ни одна библиотека не поддерживает это, поэтому я использовал этот код:

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
1
ответ дан 3 December 2019 в 23:12
поделиться

Используйте BeautifulSoup или lxml для анализа HTML.

-1
ответ дан 3 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: