Python 400使用urllib时出现错误请求HTTPError异常

Python 400使用urllib时出现错误请求HTTPError异常,python,python-3.x,urllib,Python,Python 3.x,Urllib,我想读取使用python3请求的url的输出/内容。当只传递一个字符串作为参数时,它工作正常,但当传递整个句子作为参数时,它不工作 为了方便起见,我尝试在下面给定的代码中用两个不同的部分来表达这两种情况 什么是错误?如何修复呢 但是,当我直接在我的web浏览器选项卡中打开时,第二个链接工作得很好 ### code """ import urllib.request def check_curse1(): content = "hello" ##### line of attention

我想读取使用python3请求的url的输出/内容。当只传递一个字符串作为参数时,它工作正常,但当传递整个句子作为参数时,它不工作

为了方便起见,我尝试在下面给定的代码中用两个不同的部分来表达这两种情况

什么是错误?如何修复呢

但是,当我直接在我的web浏览器选项卡中打开时,第二个链接工作得很好

### code """
 import urllib.request
 def check_curse1():
 content = "hello"  ##### line of attention
    link="http://www.wdylike.appspo
            t.com/?q="+content
    #print(link)
    connection = urllib.request.urlopen(link)
    #print(connection)
    output = connection.read()
    print(output)
    connection.close()
  def check_curse2():
    content = "hi. Need help"  
  #####line of attention
    link="http://www.wdylike.appspo
            t.com/?q="+content
    #print(link)
    connection = urllib.request.urlopen(link)
    #print(connection)
    output = connection.read()
    print(output)
    connection.close()
  print("case 1 working")
  check_curse1()
  print("\n")
  print("case 2 not working")
  check_curse2()

## output part ##
case 1
b'false'
case 2
Traceback (most recent call last):
 File "error.py", line 26, in <module>
  check_curse2()
 File "error.py", line 16, in check_curse2
  connection = urllib.request.urlopen(link)
 File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen
  return opener.open(url, data, timeout)
 File "/usr/lib/python3.6/urllib/request.py", line 532, in open
  response = meth(req, response)
 File "/usr/lib/python3.6/urllib/request.py", line 642, in 
   http_response
   'http', request, response, code, msg, hdrs)
File "/usr/lib/python3.6/urllib/request.py", line 570, in error
  return self._call_chain(*args)
File "/usr/lib/python3.6/urllib/request.py", line 504, in 
  _call_chain
  result = func(*args)
File "/usr/lib/python3.6/urllib/request.py", line 650, in 
  http_error_default
  raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request
###代码”“”
导入urllib.request
def check_curse1():
content=“你好”#####注意事项
链接=”http://www.wdylike.appspo
t、 com/?q=“+内容
#打印(链接)
connection=urllib.request.urlopen(链接)
#打印(连接)
输出=连接。读取()
打印(输出)
连接。关闭()
def check_curse2():
content=“你好。“需要帮助”
#####注意事项
链接=”http://www.wdylike.appspo
t、 com/?q=“+内容
#打印(链接)
connection=urllib.request.urlopen(链接)
#打印(连接)
输出=连接。读取()
打印(输出)
连接。关闭()
打印(“案例1工作”)
检查_curse1()
打印(“\n”)
打印(“案例2不工作”)
检查_curse2()
##输出部分##
案例1
b‘假’
案例2
回溯(最近一次呼叫最后一次):
文件“error.py”,第26行,在
检查_curse2()
文件“error.py”,第16行,在check_curse2中
connection=urllib.request.urlopen(链接)
urlopen中的文件“/usr/lib/python3.6/urllib/request.py”,第223行
返回opener.open(url、数据、超时)
文件“/usr/lib/python3.6/urllib/request.py”,第532行,打开
响应=方法(请求,响应)
文件“/usr/lib/python3.6/urllib/request.py”,第642行,在
http_响应
“http”、请求、响应、代码、消息、hdrs)
文件“/usr/lib/python3.6/urllib/request.py”,第570行出错
返回自我。调用链(*args)
文件“/usr/lib/python3.6/urllib/request.py”,第504行,在
_呼叫链
结果=func(*args)
文件“/usr/lib/python3.6/urllib/request.py”,第650行,在
http\u错误\u默认值
raise HTTPError(请求完整的url、代码、消息、hdrs、fp)
urllib.error.HTTPError:HTTP错误400:请求错误

在发出请求之前,您需要使用空格或特殊字符对字符串进行编码

导入urllib.request
def check_curse1():
content=“你好”#####注意事项
链接=”http://www.wdylike.appspot.com/?q=“+内容
#打印(链接)
connection=urllib.request.urlopen(链接)
#打印(连接)
输出=连接。读取()
打印(输出)
连接。关闭()
def check_curse2():
内容={'q':“你好,需要帮助”}注意事项
encoded_content=urllib.parse.urlencode(内容)
链接=”http://www.wdylike.appspot.com/?“+编码内容
#打印(链接)
connection=urllib.request.urlopen(链接)
#打印(连接)
输出=连接。读取()
打印(输出)
连接。关闭()
打印(“案例1工作”)
检查_curse1()
打印(“\n”)
打印(“案例2不工作”)
检查_curse2()
产出:

case 1 working
b'false'


case 2 not working
b'false'

请修复代码中的间距和缩进。您不能将任意字符串放入URL,您需要确保它们的编码正确。请参阅。