当前位置: 首页 > 面试题库 >

如何在Python中遵循元刷新

公冶龙野
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 我想在节点中打开一个页面并处理应用程序中的内容。像这样的事情似乎运作良好: 但是,如果页面返回301/302重定向,则此操作无效。万一有多个重定向,我将如何以可重用的方式进行操作?http上方是否有包装器模块,可以更轻松地处理来自节点应用程序的http响应? 问题答案: http上方是否有包装器模块,可以更轻松地处理来自节点应用程序的http响应? 请求中的重定向逻辑

  • 问题内容: 这是我的ArrayAdapter。我想通过遵循ViewHolder模式来提高效率: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html 但不确定如何做到这一点。 更新:ViewHolder模式 问题答案: ViewHolder本质上是一

  • 我遵循了文档页面中的快速启动,使用IdentityServer进行身份验证,对三个服务(IdentityServer、一个Api服务、一个ASPNET MVC应用程序)进行了有效配置。 一切工作都很完美(登录、登录、授权等),直到access_token过期1小时后。此时,MVC应用程序开始从应用编程接口服务接收(正确地)401(因为令牌过期了)。那时,我知道我应该使用refresh_token来

  • 问题内容: 我有一个清单 我想在如下所示的for循环中删除此列表中的元素: 但这是行不通的。我能做什么? 问题答案: 使用循环遍历列表时,不允许从列表中删除元素。 重写代码的最佳方法取决于你要执行的操作。 例如,你的代码等效于: 另外,你可以使用while循环: 我正在尝试删除符合条件的项目。然后我转到下一个项目。 你可以将每个不符合条件的元素复制到第二个列表中: 或者,你可以使用filter或列

  • 问题内容: 我正在谈论做类似的事情: 我可以想到一些在python中执行此操作的方法(使用和来创建和反转它的列表,…),但我想知道是否存在更优雅的方法。在那儿? 编辑:有人建议我使用xrange()而不是range(),因为range返回一个列表,而xrange返回一个迭代器。但是在Python 3(我碰巧使用过)中,range()返回一个迭代器,而xrange不存在。 问题答案: 并采用指定步骤

  • 我一直在寻找如何弄清楚如何让一个输入或某些东西进入一个time循环。就像在,输入()命令不会停止我的秒表。我尝试过tkinter、pygame和其他几种方法,但它们都不起作用。如果有人能帮我,我更喜欢小而简单的东西,如果这是可能的话。具体来说,我想学习做什么,基本上是允许在按下任何键时立即停止(最好不按回车键)。谢谢,马鞍猪! 以下是我到目前为止的情况,没有任何东西可以激活停止: