【问题标题】:Error accessing Gmail Atom feeds using feedparser使用 feedparser 访问 Gmail Atom 提要时出错
【发布时间】:2012-06-21 23:53:22
【问题描述】:

我在使用 feedparser 模块访问我的 Gmail Atom 提要时遇到问题。对于像博客这样的非密码保护费用,例如,

import feedparser

d = feedparser.parse('http://karanjthakkar.wordpress.com/feed/')
print d.feed.title

feedparser 模块返回的值是正确的。但是,当我使用它来访问我的 Gmail 提要时,

import urllib2, feedparser

def main():
 pwdmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
 pwdmgr.add_password("New mail feed", 'http://mail.google.com/', "karanjthakkar", "my-password")
 auth = urllib2.HTTPBasicAuthHandler(pwdmgr)
 opener = urllib2.build_opener(auth)
 data = opener.open('http://mail.google.com/mail/feed/atom')
 d = feedparser.parse(data)
 print d

if __name__ == '__main__'
 main()

我在捕获的提要中收到错误 401。这是捕获的内容:

我错过了什么吗?我不是CS背景,所以我所知道的就是我读过的。我打算使用捕获的 Gmail 提要来检查未读邮件的数量并使用 Arduino 显示它们。

【问题讨论】:

  • 您可以从命令提示符复制/粘贴,无需链接到图像。右键单击标题栏>编辑>标记>选择>右键单击。
  • 谢谢@jadkik94。我不知道这是可能的。

标签: python rss feed atom-feed feedparser


【解决方案1】:

我对 HTTPDigestAuthHandler 不满意,但能够让它与 HTTPBasicAuthHandler 一起工作。

import urllib2, feedparser

pwdmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
pwdmgr.add_password("New mail feed", 'http://mail.google.com/', username, password)
auth = urllib2.HTTPBasicAuthHandler(pwdmgr)
opener = urllib2.build_opener(auth)
data = opener.open('http://mail.google.com/mail/feed/atom')
d = feedparser.parse(data)
print d

【讨论】:

  • 我是直接输入用户名和密码还是单引号或双引号?我的意思是我使用这三个初始化中的哪一个: 1. pwdmgr.add_password("New mail feed", 'mail.google.com', 'username', 'password') 2. pwdmgr.add_password("New mail feed ", 'mail.google.com', 'username', "password") 3. pwdmgr.add_password("New mail feed", 'mail.google.com', username, password) 当我使用 3. 时,我得到 "Invalid syntax “对于那条线。当我使用 1. 和 2. 时,我收到“HTTP Error 401 : Basic Auth Failed”
  • 1 或 2 都可以。 Python中的单引号和双引号没有区别。 3 假设您有名为用户名和密码的变量。我认为你做错的是你应该使用“mail.google.com”而不是“mail.google.com”。文档指定参数应该是 URI。 “mail.google.com”是一个域名。添加 URI 说明符“http://”使其成为有效的 URI。
  • 其实我才意识到是 Stackoverflow 删除了 http:// 并把它变成了一个链接。尝试在 PasswordMgr 中指定准确的 URI,而不是顶级 URI。确保您使用的是 HTTPBasicAuthHandler,并且您使用的是您创建的处理程序来打开提要 URI,而不是 feedparser。
  • 好的,@Woody。所以我所做的是,使用您提供的确切代码并将代码中的第 4 行更改为: pwdmgr.add_password("New mail feed", 'mail.google.com', "karanjthakkar", "my-password") 另一个更改在第 4 行和第 7 行中将“http”更改为“https”。但它仍然不起作用。我又得到了401。基本身份验证失败。
  • AFAIK 我提供的代码应该可以工作,并且适用于我的 gmail 帐户。也许编辑您的问题,以便我可以确切地看到您现在拥有的内容。还有另一个类似的问题采用相同的方法stackoverflow.com/a/1777142/1448071
猜你喜欢
  • 2011-03-11
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
相关资源
最近更新 更多