ajdjdjdjdjs 2023-09-26 10:27 采纳率: 25%
浏览 25
已结题

Python代码不打印的原因

这是我的PYTHON代码,检测status_code返回值是200但是就是不打印。请问原因在哪,以下两张图是网上爬取的截图 爬取网址是https://www.iciba.com/translate

img


img

import requests
class iciba(object):
    def __init__(self,word):
        self.url='ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'
        self.headers={"Uesr-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"}
        self.data={'from':"en",'to':'zh','q':word}
    def get_data(self):
        response=requests.post(url=self.url,headers=self.headers,data=self.data)
        return response.content
    def run(self):
        response=self.get_data()
        print(response)
if __name__=='__mian__':
    iciba=iciba("apple")
    iciba.run()
  • 写回答

20条回答 默认 最新

  • 这一次有糖 2023-10-03 11:31
    关注
    获得0.60元问题酬金
    
    import requests
    from urllib.parse import quote
    
    class iciba(object):
        def __init__(self, word):
            self.word = quote(word)  # URL编码
            self.url = f'http://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc&q={self.word}'
            self.headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
            }
        
        def get_data(self):
            response = requests.post(url=self.url, headers=self.headers)
            return response.content
        
        def run(self):
            response = self.get_data()
            print(response)
    
    if __name__ == '__main__':
        my_iciba = iciba("apple")
        my_iciba.run()
    
    
    评论
  • 专家-赤兔[在线] 2023-09-26 10:34
    关注
    获得0.30元问题酬金

    引自免费微信小程序-皆我百晓生,希望对题主有所帮助,如有帮助,还望采纳。


    代码中存在一个拼写错误,将__mian__改为__main__即可。 __main__是Python中特殊的标识符,表示当前模块是主模块,可以执行。修改后的代码如下:

    import requests
    
    class iciba:
        def __init__(self, word):
            self.url = 'ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'
            self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"}
            self.data = {'from': 'en', 'to': 'zh', 'q': word}
            
        def get_data(self):
            response = requests.post(url=self.url, headers=self.headers, data=self.data)
            return response.content
    
        def run(self):
            response = self.get_data()
            print(response)
            
    if __name__ == '__main__':
        iciba = iciba("apple")
        iciba.run()
    

    修改后的代码应该可以打印出响应内容了。同时,建议检查一下URL是否正确,确保能够访问到想要爬取的网页数据。

    评论
  • 浩三爷 2023-09-26 10:34
    关注

    首先,我注意到你的代码中存在一个拼写错误,可能会导致你的程序无法正常运行。

    在你的__init__方法中,你设置了self.url为'ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'。但是,你在get_data方法中使用requests.post时,url参数的值没有正确地从self.url中取出,而是直接写了一个字符串'ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'。这样会导致你的请求发送到你预期的URL。

    另外,我还注意到你的User-Agent头部字段中有一个拼写错误,"Uesr-Agent"应为"User-Agent"。这个错误可能会导致服务器无法正确识别你的请求,但具体影响取决于服务器如何处理这个错误的头部字段。

    最后,你的代码中的URL和头部字段可能与实际网站的要求不符,这可能导致你的请求被服务器拒绝。你可能需要根据你的具体需求修改这些值。

    评论
  • 数据大魔王 2023-09-26 10:37
    关注
    获得0.45元问题酬金

    代码中存在几个问题:

    1. __init__方法中,self.url的值应该是完整的url,而不仅仅是路径。
      应该将self.url='ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'改为self.url='https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'

    2. __init__方法中,"Uesr-Agent"应该是"User-Agent",拼写错误。

    3. if __name__=='__mian__':中,__mian__应该是__main__,拼写错误。

    修改完后的代码如下:

    import requests
    
    class iciba(object):
        def __init__(self, word):
            self.url = 'https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'
            self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"}
            self.data = {'from': "en", 'to': 'zh', 'q': word}
        
        def get_data(self):
            response = requests.post(url=self.url, headers=self.headers, data=self.data)
            return response.content
        
        def run(self):
            response = self.get_data()
            print(response)
    
    if __name__ == '__main__':
        ic = iciba("apple")
        ic.run()
    
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-26 12:19
    关注
    获得0.60元问题酬金

    【相关推荐】



    • 这篇博客: Python 网络爬虫与数据采集(一)中的 3.5.3 状态码 (Status Code) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      所有 HTTP 响应状态代码都分为五个类或类别。状态码的第一位数字定义响应的类别,而最后两位数字没有任何分类或分类作用。该标准定义了五类:
      ❀ 1xx 信息响应–收到请求,继续进行
      ❀ 2xx 成功–成功接收,理解并接受了请求
      ❀ 3xx 重定向–为了完成请求,需要采取进一步的措施
      ❀ 4xx 客户端错误–请求包含错误的语法或无法满足
      ❀ 5xx 服务器错误–服务器无法满足看似有效的请求
      状态码详细说明
      ❖ 201-206 都表示服务器成功处理了请求的状态代码,说明网页可以正常访问。
      ➢ 200(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
      ➢ 201(已创建)请求成功且服务器已创建了新的资源。
      ➢ 202(已接受)服务器已接受了请求,但尚未对其进行处理。
      ➢ 203(非授权信息)服务器已成功处理了请求,但返回了可能来自另一来源的信息。
      ➢ 204(无内容)服务器成功处理了请求,但未返回任何内容。
      ➢ 205(重置内容)服务器成功处理了请求,但未返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如清除表单内容以输入新内容)。
      ➢ 206(部分内容)服务器成功处理了部分 GET 请求。
      ❖ 300-3007 表示的意思是:要完成请求,您需要进一步进行操作。通常,这些状态代码是永远重定向的。
      ➢ 300(多种选择)服务器根据请求可执行多种操作。服务器可根据请求者来选择一项操作,或提供操作列表供其选择。
      ➢ 301(永久移动)请求的网页已被永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。您应使用此代码通知搜索引擎蜘蛛网页或网站已被永久移动到新位置。
      ➢ 302(临时移动)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。会自动将请求者转到不同的位置。但由于搜索引擎会继续抓取原有位置并将其编入索引,因此您不应使用此代码来告诉搜索引擎页面或网站已被移动。
      ➢ 303(查看其他位置)当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。对于除 HEAD 请求之外的所有请求,服务器会自动转到其他位置。
      ➢ 304(未修改)自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应。由于服务器可以告诉搜索引擎自从上次抓取后网页没有更改过,因此可节省带宽和开销。
      ➢ 305(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。
      ➢ 307(临时重定向)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。会自动将请求者转到不同的位置。但由于搜索引擎会继续抓取原有位置并将其编入索引,因此您不应使用此代码来告诉搜索引擎某个页面或网站已被移动。。
      ❖ 4XXHTTP 状态码表示请求可能出错,会妨碍服务器的处理。
      ➢ 400(错误请求)服务器不理解请求的语法。
      ➢ 401(身份验证错误)此页要求授权。您可能不希望将此网页纳入索引。
      ➢ 403(禁止)服务器拒绝请求。
      ➢ 404(未找到)服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。
      例如:http://www.0631abc.com/20100aaaa,就会进入 404 错误页面
      ➢ 405(方法禁用)禁用请求中指定的方法。
      ➢ 406(不接受)无法使用请求的内容特性响应请求的网页。
      ➢ 407(需要代理授权)此状态码与 401 类似,但指定请求者必须授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。
      ➢ 408(请求超时)服务器等候请求时发生超时。
      ➢ 409(冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。
      ➢ 410(已删除)请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码相似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。如果资源已永久删除,您应当使用 301 指定资源的新位置。
      ➢ 411(需要有效长度)服务器不接受不含有效内容长度标头字段的请求。
      ➢ 412(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。
      ➢ 413(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
      ➢ 414(请求的 URI 过长)请求的 URI(通常为网址)过长,服务器无法处理。
      ➢ 415(不支持的媒体类型)请求的格式不受请求页面的支持。
      ➢ 416(请求范围不符合要求)如果页面无法提供请求的范围,则服务器会返回此状态码。
      ➢ 417(未满足期望值)服务器未满足" 期望" 请求标头字段的要求。
      ❖ 500 至 505 表示的意思是:服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
      ➢ 500(服务器内部错误)服务器遇到错误,无法完成请求。
      ➢ 501(尚未实施)服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。
      ➢ 502(错误网关)服务器作为网关或代理,从上游服务器收到了无效的响应。
      ➢ 503(服务不可用)目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。
      ➢ 504(网关超时)服务器作为网关或代理,未及时从上游服务器接收请求。
      ➢ 505(HTTP 版本不受支持)服务器不支持请求中所使用的 HTTP 协议版本。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
  • 小明说Java 2023-09-26 12:41
    关注
    获得0.30元问题酬金

    有没有报错信息啊,你console看一下,有没有数据打印

    评论
  • B64A-消闲 2023-09-26 12:57
    关注
    获得0.30元问题酬金

    三个问题吧,第一个就是 URL的问题,协议尽量完整,https之类的;第二个就是请求头,你拼错了实user不是uesr;第三个问题请求方式,要把post改成get。我改了下,可以试下看有没有用

    import requests
    
    class ICIBATranslator:
        def __init__(self, word):
            self.url = 'https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'
            self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"}
            self.data = {'from': "en", 'to': 'zh', 'q': word}
    
        def get_translation(self):
            response = requests.get(url=self.url, headers=self.headers, params=self.data)
            return response.content
    
        def run(self):
            translation = self.get_translation()
            print(translation)
    
    if __name__ == '__main__':
        translator = ICIBATranslator("apple")
        translator.run()
    
    
    评论
  • cyjbj 2023-09-26 13:14
    关注
    获得0.45元问题酬金

    将__mian__错写为__main__了

    评论
  • honestman_ 2023-09-26 14:09
    关注
    获得0.45元问题酬金

    正确代码:

    import requests
    class iciba(object):
        def __init__(self,word):
            self.url='https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'
            self.headers={"Uesr-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"}
            self.data={'from':"en",'to':'zh','q':word}
        def get_data(self):
            response=requests.post(url=self.url,headers=self.headers,data=self.data)
            return response.content.decode()
        def run(self):
            response=self.get_data()
            print(response)
    
    if __name__ == '__main__':
        iciba=iciba("apple")
        iciba.run()
    
    
    
    评论
  • 爱情放个假 2023-09-26 14:44
    关注

    你这个最简单了,直接加个cookies就好了

    评论
  • Marst Code 2023-09-26 15:26
    关注
    获得0.30元问题酬金

    修改代码如下
    可以更改变量word

    import requests
    
    word = 'apple'
    
    url = f'https://dict.iciba.com/dictionary/word/suggestion?word={word}&nums=5&ck=709a0db45332167b0e2ce1868b84773e&timestamp=1695712864110&client=6&uid=123123&key=1000006&is_need_mean=1&signature=967e9165ae5e197d772f563d37bd9ed3'
    
    res = requests.post(url)
    print(res.status_code)
    print(res.json())
    
    
    评论
  • IT里的交易员 2023-09-26 17:19
    关注
    获得0.30元问题酬金

    name不等于main,拼写错误,所以程序不执行,哈哈

    评论
  • 心梓知识 2023-09-27 01:57
    关注
    获得0.30元问题酬金

    结合GPT给出回答如下请题主参考
    很抱歉,您没有提供任何代码示例或截图。如果您能补充这些信息,我们将非常乐意帮助您找到问题的原因并提供解决方法。

    评论
  • coder_small_bell 2023-09-27 09:34
    关注
    获得0.30元问题酬金

    __mian__哈哈哈

    评论
  • Leodong. 2023-09-27 10:40
    关注
    获得0.30元问题酬金

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    从您提供的代码来看,可能的原因是在if __name__=='__mian__':这一行中,__mian__应该是__main__。请将这一行修改为:

    if __name__ == '__main__':
    

    另外,您的代码中没有处理HTTP状态码,您可以在get_data方法中添加对状态码的判断,只有当状态码为200时才打印响应内容。修改后的get_data方法如下:

    def get_data(self):
        response = requests.post(url=self.url, headers=self.headers, data=self.data)
        if response.status_code == 200:
            return response.content
        else:
            print("请求失败,状态码:", response.status_code)
            return None
    

    这样,当状态码为200时,会打印响应内容;否则,会打印错误信息。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论
  • yy64ll826 2023-09-27 15:24
    关注
    获得0.30元问题酬金

    如果 Python 无法打印任何信息,可能存在多种原因。以下是一些可能导致 Python 无法打印信息的常见原因及其解决方法:

    1. 编写的代码存在错误:检查代码是否存在拼写错误或语法错误,如果可能的话,尝试添加一些 print 语句来调试代码。

    2. 打印语句的位置不正确:检查打印语句是否在正确的位置。例如,如果打印语句在循环语句之外,那么它可能永远无法执行。

    3. 输出被重定向:如果输出被重定向到文件或其他设备,则无法在屏幕上看到输出。在这种情况下,可以通过将输出重定向回控制台来解决此问题。

    4. Python 解释器崩溃:如果 Python 解释器崩溃或崩溃,则可能无法打印任何输出。在这种情况下,重新启动 Python 解释器或计算机可能有助于解决问题。

    5. Python 模块未正确安装:如果代码中使用了某个模块,但未正确安装,则可能无法打印输出。在这种情况下,尝试重新安装相应的模块。

    6. 程序执行时间过长:如果程序运行时间过长,则可能会给人的印象是 Python 未打印任何输出。在这种情况下,请耐心等待程序完成并检查输出。

    评论
  • 程序员Ale-阿乐 2023-09-28 09:53
    关注
    获得0.30元问题酬金
    1. 请求URL格式错误: 你的URL "ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc" 缺少协议部分,应该以 "http://" 或 "https://" 开头。请确保URL是完整的。
    2. "User-Agent"头部拼写错误: 你在headers中的"User-Agent"拼写错误,应该是"User-Agent"而不是"Uesr-Agent"。请修正它。
    3. if name 判断条件错误: 在你的代码中,条件应该是 if __name__ == '__main__': 而不是 if __name__ == '__mian__':。修正它以确保在正确的条件下运行代码。

    修正后的代码如下:

    import requests
    
    class iciba(object):
        def __init__(self, word):
            self.url = 'https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=994b65f5e8e547cc'
            self.headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
            }
            self.data = {'from': "en", 'to': 'zh', 'q': word}
    
        def get_data(self):
            response = requests.post(url=self.url, headers=self.headers, data=self.data)
            return response.content
    
        def run(self):
            response = self.get_data()
            print(response)
    
    if __name__ == '__main__':
        iciba_instance = iciba("apple")
        iciba_instance.run()
    
    评论
  • 关注
    获得0.30元问题酬金

    拼接字符串到你需要发送到url

    评论
  • GIS工具开发 2023-10-03 22:34
    关注
    获得0.30元问题酬金

    没有进入打印条件

    评论
  • 会跑的小鹿 2023-10-03 22:56
    关注
    获得0.15元问题酬金

    没有满足打印条件,没有执行进去

    评论

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 创建了问题 9月26日

悬赏问题

  • ¥30 哈夫曼编码译码器打印树形项目
  • ¥20 求完整顺利登陆QQ邮箱的python代码
  • ¥15 怎么下载MySQL,怎么卸干净原来的MySQL
  • ¥15 网络打印机Ip地址自动获取出现问题
  • ¥15 求局部放电案例库,用于预测局部放电类型
  • ¥100 QT Open62541
  • ¥15 stata合并季度数据和日度数据
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?
  • ¥15 用QT,进行QGIS二次开发,如何在添加栅格图层时,将黑白的矢量图渲染成彩色