首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么urllib2不接受我的网址?

为什么urllib2不接受我的网址?
EN

Stack Overflow用户
提问于 2012-08-26 00:57:18
回答 1查看 232关注 0票数 0

我已经将URL存储在一个列表中,这些URL应该被传递给urllib2。然而,urllib似乎不太喜欢这一点,我就是不明白为什么!

下面是我得到的信息:

代码语言:javascript
复制
url = list[1]
response = urllib2.urlopen(url)
html = response.read()

URL是一种google maps Directions Web API URL:

代码语言:javascript
复制
http://maps.googleapis.com/maps/api/directions/json?origin=[origin]&destination=[destination]&waypoints=optimize:true|[waypoint1]|[waypoint2]&sensor=false

现在,如果我尝试运行此命令,检索到的html总是如下所示:

代码语言:javascript
复制
{
"routes" : [],
"status" : "INVALID_REQUEST"
}

表示传递的URL有问题。但是,如果我将URL直接分配给它,如下所示:

代码语言:javascript
复制
url = "http://maps.googleapis.com/maps/api/directions/json?origin=[origin]&destination=[destination]&waypoints=optimize:true|[waypoint1]|[waypoint2]&sensor=false"
response = urllib2.urlopen(url)
html = response.read()

对我来说,最终的结果将会是如下所示:

代码语言:javascript
复制
         "warnings" : [],
         "waypoint_order" : [ 2, 0, 7, 5, 6, 4, 3, 1 ]
      }
   ],
   "status" : "OK"
}

因此,我的问题(希望不要太愚蠢)是:为什么urllib在URL是直接分配的情况下执行其工作,而不是在URL来自列表时执行其工作?

非常感谢你的帮助,J

附言:为什么论坛软件总是截断我的“Hi all”问候?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-28 22:11:41

我终于解决了这个问题!

一旦我退后一步,再想一想,这很容易:我确实从谷歌的Web API得到了答案,这意味着urllib2确实传递了一些东西。但是,它一定是向API后端发送了一些没有任何意义的东西。包含德国地址的URL我很幸运地猜到了问题是由变音引起的。

因此,我只是通过一个函数传递我的URL,将每个变音替换为它的非变音替代,突然之间一切似乎都正常了。

如果有人遇到类似的问题,这里是我如何解决它的:

代码语言:javascript
复制
# Function for replacing all umlauts
def replaceUmlauts(text):
    dic = {'Ä':'Ae', 'ä':'ae', 'Ö':'Oe', 'ö':'oe', 'Ü':'Ue', 'ü':'ue', 'ß':'ss'}
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text

然后简单地使用

代码语言:javascript
复制
response = urllib2.urlopen(replaceUmlauts(url))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12123926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档