如何使用Feed解析器python解析XML feed?
我试图用feedparser解析python中的feed。但我得到的是None
返回。林不知道我缺少什么。这里是我的代码:如何使用Feed解析器python解析XML feed?
import feedparser
def rss(self):
rss = 'https://news.google.com/news?q=fashion&output=rss'
feed = feedparser.parse(rss)
for key in feed.entries:
return key.title
如果您认为有更好的rss/xml饲料分析。请告诉我。 (IM新的Python)
print(key)
显示none
和print(len(feed.entries))
还显示none
print(feed)
{'feed': {}, 'entries': [], 'bozo': 1, 'bozo_exception': URLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),)}
print(feedparser)
<module 'feedparser' from '/Users/User_name/python-projects/my_env/lib/python3.6/site-packages/feedparser.py'>
尝试以下基本代码,这对我来说工作得很好,给了我在饲料中10个项目,当我跑了。或者,粘贴您正在运行的完整代码,然后我会看一看。
谢谢,我试过这只是打印'0' – kevinabraham
@kevinabraham我认为这意味着你根本无法读取数据饲料,这不是一个Python编码问题。如果您从网络浏览器直接尝试该URL,您会看到数据吗? –
是的,我可以。当我直接进入链接时,它会显示文字“
找出问题实际上是与SSL握手通过添加ssl._create_default_https_context = ssl._create_unverified_context
来修复它。
对于任何其他人面临的问题。完整的代码是:
import feedparser
import ssl
if hasattr(ssl, '_create_unverified_context'):
ssl._create_default_https_context = ssl._create_unverified_context
rss = 'https://news.google.com/news?q=fashion&output=rss'
feed = feedparser.parse(rss)
print(feed)
这样做,将允许任何拥有特权网络位置的人能够使用这些HTTP客户端中的任何一个轻松执行针对Python应用程序的中间人攻击,并随意更改流量。 [为stdlib http客户端默认启用证书验证](https://www.python.org/dev/peps/pep-0476/) – stovfl
@stovfl哦对。使用'create_default_context'而不是'_create_unverified_context'会更好吗? – kevinabraham
既不是第一个也不是第二个。我将使用'pip install urllib3 [secure]'安装证书,阅读[部分:证书验证](http://urllib3.readthedocs.io/en/latest/user-guide.html?highlight=certificate) – stovfl
你回来后只循环一次迭代。为什么不使用列表或元组返回所有'key''标题? –
嗨,山姆,即使我打印(key.title),而不是返回。它仍然导致没有 – kevinabraham
@stovfl。我更新了相应的问题 – kevinabraham