我正在尝试加载一个重定向到自身的网址。我假设它正在加载 cookie 并寻找它,但它从未看到它,所以存在无限循环的请求。
我尝试过 urllib2、urlfetch 和 httplib2。没有工作。
我尝试过这个:
url = "http://www.cafebonappetit.com/menu/your-cafe/collins-cmc/cafes/details/50/collins-bistro"
thing = urllib2.HTTPRedirectHandler()
thing2 = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(thing, thing2)
url = 'http://www.nytimes.com/2005/10/26/business/26fed.html?pagewanted=print'
page = opener.open(url)
这适用于 shell,但不适用于 Google App Engine。在 urlfetch 的文档中:http://code.google.com/appengine/docs/python/urlfetch/fetchfunction.html http://code.google.com/appengine/docs/python/urlfetch/fetchfunction.html
在 follow_redirects 下,它说:
“重定向时不会处理 Cookie。如果需要 Cookie 处理,请将 follow_redirects 设置为 False 并手动处理 Cookie 和重定向。”
我不知道如何执行此操作,并且文档似乎也没有提供任何线索。
我用谷歌搜索了这个问题,没有任何报告的问题可以解决我的问题。
多一点解释。很高兴至少网站的行为得到了解释:它需要一些 cookie,如果未设置 cookie,它会使用 cookie 设置标头重定向到自身。您或许应该了解 cookie 的工作原理;网站使用 Set-Cookie 标头发送 cookie,浏览器必须在 Cookie 标头中回显它(有一些变化)。 Python 有一个用于管理 cookie 集合的库 cookielib 可以帮助您完成此任务。
最好使用原生的 urlfetch API;它的返回对象有一个 headers 对象,它是一个给出所有标头的字典(例如 Set-Cookie 标头)。要发送特定标头,请使用 urlfetch.fetch() 函数的 headers 参数。在这里,您将使用 Cookie 标头(但请记住,您设置的 Cookie 标头的格式与您收到的 Set-Cookie 标头的格式不同——这就是 cookielib 的用武之地。
祝你好运!
附言。使用curl -v 可以很容易地看到该站点实际上发送了三个不同的Set-Cookie 标头。您可能必须同时处理这三个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)