我必须加载一些带有西里尔符号的网址。我的脚本应该适用于此:
如果我在浏览器中使用它,它将替换为普通符号,但 urllib 代码失败并出现 404 错误。如何正确解码此网址?
当我直接在代码中使用该 url 时,例如 address = 'that address',它可以完美运行。但我使用解析页面来获取这个 url。我有一个包含西里尔字母的网址列表。也许他们的编码不正确?这是更多代码:
requestData = urllib2.Request( %SOME_ADDRESS%, None, {"User-Agent": user_agent})
requestHandler = pageHandler.open(requestData)
pageData = requestHandler.read().decode('utf-8')
soupHandler = BeautifulSoup(pageData)
topicLinks = []
for postBlock in soupHandler.findAll('a', href=re.compile('%SOME_REGEXP%')):
topicLinks.append(postBlock['href'])
postAddress = choice(topicLinks)
postRequestData = urllib2.Request(postAddress, None, {"User-Agent": user_agent})
postHandler = pageHandler.open(postRequestData)
postData = postHandler.read()
File "/usr/lib/python2.6/urllib2.py", line 518, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found