Python脚本的feedparser可以工作,但在docker容器

时间:2018-02-06 20:20:06

标签: python docker containers feedparser

在mac上运行Docker版本17.12.0-ce-mac49(21995)。转换现有的工作python脚本,该脚本在受密码保护的feed上执行一些feed解析。标准的python 2.7脚本完美运行。

创建了一个基于alpine的容器,其中包含用于脚本的工作python和相关的站点包。执行脚本会给我一个错误:

  
    
      

d = feedparser.parse('http://user:pwd@192.168.1.121:4321/rss/feed')

             

d       {'feed':{},'bozo':1,'bozo_exception':URLError(gaierror(-2,'名称无法解析'),),'条目':[]}

    
  

我收到“名称无法解析”错误,但用户和密码未更改。代码完全相同 - 唯一的区别是docker容器中的版本不起作用。

如果我在没有用户名/密码的情况下尝试该命令,则会收到相应的401错误:

  
    
      

d = feedparser.parse('http://192.168.1.121:4321/rss/feed')

             

d       {'feed':{},'status':401,'version':u'','encoding':u'utf-8','bozo':1,'headers':{'date':'Tue ,2018年2月6日19:30:53 GMT','content-length':'90','content-type':'text / html; charset = utf-8','www-authenticate':'基本领域=“需要登录”'},'href':你'http://192.168.1.121:4321/rss/feed','名称空间':{},'条目':[] ,'bozo_exception':SAXParseException('syntax error',)}

    
  

所以它可以找到主机&端口是可访问的。我甚至试过通过HTTPDigestAuthHandler传递凭据,但问题仍然存在。

有什么想法正在做什么?

1 个答案:

答案 0 :(得分:0)

好吧,问题似乎与用户的密码有关。它包含#作为第一个字符。

我创建了另一个用户test,密码为test,代码在容器和容器外都有效。

哦 - 我想提到的另一件事是我在原始问题中使用了HTTPDigestBasicHandler - 而不是DigestHandler。

显然这并没有解决问题 - 但确实给了我一个解决方法。