【问题标题】:Python, the web page seems not to see ALL my DATA and does not provide the correct answer?Python,网页似乎没有看到我的所有数据并且没有提供正确的答案?
【发布时间】:2023-03-28 01:51:01
【问题描述】:

如果我输入这个 URL,我会得到一些 XML 格式的文本作为响应:

http://skrutten.nada.kth.se/scrut/svesve/?text=g%E5&url=&xmlout=on&x=Granska

现在我尝试编写一个向网页发布消息的 Python 函数,我应该得到相同的信息。但是,我从网页中获得的信息较少。似乎有些数据没有“看到”(文本),但我没有收到任何错误消息。例如,我不确定我是否以正确的方式处理编码(我尝试使用 utf-8 没有区别)

对我的错误有什么建议吗?

def fetch_web (name, par1):
    """Fetch the web data defined by name and return a string with the web page"""

    if name == "granska":
        url = "http://skrutten.nada.kth.se/scrut/svesve/"
        values = {"text":par1,"xmlout":"on","x":"Granska","url":""}
        code = "ISO-8859-1"
    data = urllib.parse.urlencode(values)
    data = data.encode(code)

    req = urllib.request.Request(url,data)
    response = urllib.request.urlopen(req)

    page = response.read()
    return page.decode("ISO-8859-1")

print (fetch_web("granska","gå"))

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    试试这个

    def fetch_web (name, par1):
        """Fetch the web data defined by name and return a string with the web page"""
    
        if name == "granska":
            url = "http://skrutten.nada.kth.se/scrut/svesve/"
            values = {"text":par1,"xmlout":"on","x":"Granska","url":""}
            code = "ISO-8859-1"
    
        data = urllib.parse.urlencode(values)
        data = data.encode(code)
        full_url = "%s?%s" % (url, data)
    
        req = urllib.request.Request(full_url)
        response = urllib.request.urlopen(req)
    
        page = response.read()
        return page.decode("ISO-8859-1")
    
    print (fetch_web("granska","gå"))
    

    可能存在由于 URL 末尾缺少文件名而导致的问题。过去,我在几个没有添加“?”的脚本中也经历过同样的事情。当 URL 末尾只有一个尾随“/”时,在 URL 和发布数据之间。我认为这是 urllib2.Request 类的错误,但自从我找到了解决方法后,我一直在推迟调查是否存在错误报告。

    另外,如果name != "granska" 将出现异常,因为urlvaluesdata = ... 行中使用时将是未定义的变量。

    【讨论】:

    • 乐于助人:)。如果您可以接受答案,它将帮助将来遇到此问题的其他人知道此解决方案有效
    • 您能说两句关于 full_url 的用途。您似乎正在连接 url 和 (?) 数据。 urllib.request.Request(url,data) 语句不应该做同样的事情吗?
    • 是的,它应该,但我过去也经历过同样的事情,我的几个脚本没有添加“?”当 URL 末尾只有一个尾随“/”时,在 URL 和发布数据之间。我认为这是一个错误,但自从我找到解决方法后,我一直在推迟调查是否存在错误报告。
    • 好的!我在这个特定网页上遇到了这个问题,但我已经成功处理了其他同样被 / 终止的网页
    • 这可能与 Web 服务器如何处理 urllib2 发送的请求有关。我不确定 urllib2 是否真的在标头中发送帖子数据,或者是否将其添加到 url 字符串中。它可能由不同的服务器以不同的方式处理,这可以解释不一致的行为。
    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 2017-05-15
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2017-02-09
    相关资源
    最近更新 更多