我正在使用Python feedparser从RSS提要中读取文章.但是,只能阅读第一页的文章.是否有任何其他lib /包可以读取RSS提要的所有文章?
类似问题@ SO:Feedparser - 从Google阅读器中检索旧邮件
我在解析HTTPS rss feed的feedparser中遇到了这个SSL问题,我真的不知道该怎么办,因为在feedparser上找不到关于这个错误的任何文档
>>> import feedparser
>>> feed = feedparser.parse(rss)
>>> feed
{'feed': {}, 'bozo': 1, 'bozo_exception': URLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),), 'entries': []}
>>> feed["items"]
[]
>>>
Run Code Online (Sandbox Code Playgroud) 我在python中使用feedparser库从当地报纸上检索新闻(我的目的是在这个语料库上进行自然语言处理),并希望能够从RSS提要中检索许多过去的条目.
我不太熟悉RSS的技术问题,但我认为这应该是可能的(我可以看到,例如,当我移动滚动条时,Google Reader和Feedly可以"按需"执行此操作).
当我执行以下操作时:
import feedparser
url = 'http://feeds.folha.uol.com.br/folha/emcimadahora/rss091.xml'
feed = feedparser.parse(url)
for post in feed.entries:
title = post.title
Run Code Online (Sandbox Code Playgroud)
我只收到了十几个条目.我在考虑数百个.如果可能的话,也许是上个月的所有参赛作品.是否可以仅使用feedparser执行此操作?
我打算从rss中获取仅包含新闻项的链接,并使用BeautifulSoup解析整个页面以获取我想要的文本.另一种解决方案是跟踪页面中所有本地链接的爬虫,以获取大量新闻,但我想暂时避免这样做.
-
出现的一个解决方案是使用Google Reader RSS缓存:
但要访问它,我必须登录Google阅读器.谁知道我是如何从python那样做的?(我真的不知道关于网络的事情,我通常只讨论数值计算).
我该如何修复这个错误?feedparser 似乎不支持 mypy 类型?我找不到 feedparser 的 typeshed 实现
更新1
我看到一个名为ignore_missing_imports 的选项,我可以将其添加到 pyproject.toml 中。这样做不是一个坏主意吗?
我试图找到一个可以与Perl CGI脚本一起使用的RSS解析器.我发现simplepie并且在PHP脚本中使用这个非常简单的解析器.不幸的是,这不适用于Perl CGI脚本.如果有什么比较容易使用,请告诉我simplepie.
我遇到过这个RssDisplay但是我不确定它的用法以及它有多好.
我知道它urllib2可以在Google App Engine上作为Urlfetch的包装使用,如您所知,Universal Feedparser使用urllib2.
你知道在urllib2上设置超时的方法吗?urllib2上
的timeout参数是否已移植到Google App Engine版本上?
我对方法不感兴趣:
rssurldata = urlfetch(rssurl, deadline=..)
feedparser.parse(rssurldata)
Run Code Online (Sandbox Code Playgroud) 我当时正在为RSS供稿编写Python解析器脚本。我使用的是feedparser,但是,我仍然无法解析FeedBurner的供稿。如今谁需要FeedBurner?无论如何..
例如,我找不到解析方法
http://feeds.wired.com/wired/index
http://feeds2.feedburner.com/ziffdavis/pcmag
当我将它们放入feedparser库时,似乎无法正常工作。尝试将?fmt = xml或?format = xml放在URL的末尾,但仍然没有采用xml格式。
我是否需要使用诸如BeautifulSoup之类的html解析器来解析FeedBurner提要?最好是已经有一个python公共解析器或聚合器脚本可以处理这个问题了吗?
任何提示或帮助将不胜感激。
当我尝试将 feedparser 库包含到交互式 Python 环境中时收到错误:
>>>> import feedparser
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named feedparser
Run Code Online (Sandbox Code Playgroud)
BeautifulSoup 和 pydelicious 也会发生这种情况。为什么我会收到此错误?
使用 OS X 10.8.3,其中 /usr/bin 目录中包含以下文件:
$ ll python*
-rwxr-xr-x 2 root wheel 58896 Mar 17 20:55 python
-rwxr-xr-x 6 root wheel 925 Nov 16 10:30 python-config
lrwxr-xr-x 1 root wheel 75 Nov 16 10:30 python2.5 -> ../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5
lrwxr-xr-x 1 root wheel 82 Nov 16 10:30 python2.5-config -> ../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5-config
lrwxr-xr-x 1 root …Run Code Online (Sandbox Code Playgroud) 我正在Django中编写一个基本的RSS提要阅读器.我有一个表单,用户提交rss提要,然后将其添加到他的提要列表中.但由于某些原因,我无法使用Feed解析器提取有关Feed的基本信息.
当我运行以下代码时:
def form_valid(self, form):
user = self.request.user
link = form.cleaned_data['link']
feed = feedparser.parse(link).feed
title = feed.title
try:
feed_obj = Feed.objects.get(link=link)
except ObjectDoesNotExist:
feed_obj = Feed(link=link, title=title)
feed_obj.save()
user.get_profile().feeds.add(feed_obj)
return super(DashboardView, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
Django在第5行抛出了一个"对象没有属性'标题'"例外:
title = feed.title
Run Code Online (Sandbox Code Playgroud)
完整的错误详情是:
Traceback:
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
25. return view_func(request, *args, **kwargs)
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
86. return handler(request, *args, **kwargs)
File "/home/yaniv/nextfeed/venv/local/lib/python2.7/site-packages/django/views/generic/edit.py" in post
165. …Run Code Online (Sandbox Code Playgroud) 我正在尝试解析RSS提要.Feed中的条目包含以下日期元素:
<dc:date>2016-09-21T16:00:00+02:00</dc:date>
Run Code Online (Sandbox Code Playgroud)
使用feedparser,我尝试:
published_time = datetime.fromtimestamp(mktime(entry.published_parsed))
Run Code Online (Sandbox Code Playgroud)
但问题是我似乎得到了存储在数据库中的错误时间.在这种特殊情况下,日期时间存储为:
2016-09-21 13:00:00
Run Code Online (Sandbox Code Playgroud)
...当我期望14:00 - 正确的UTC时间.
我认为问题出在我们的django设置中,我们有:
TIME_ZONE = 'Europe/Berlin'
Run Code Online (Sandbox Code Playgroud)
因为当我切换到:
TIME_ZONE = 'UTC'
Run Code Online (Sandbox Code Playgroud)
...数据时间存储为正确的UTC时间:
2016-09-21 14:00:00
Run Code Online (Sandbox Code Playgroud)
有没有办法保持django设置不变,但要正确解析和存储这个日期时间,而不会影响django时区设置?
编辑:也许这样更清楚......
print entry.published_parsed
published_time = datetime.fromtimestamp(mktime(entry.published_parsed))
print published_time
localized_time = pytz.timezone(settings.TIME_ZONE).localize(published_time, is_dst=None)
print localized_time
time.struct_time(tm_year=2016, tm_mon=9, tm_mday=21, tm_hour=14, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=265, tm_isdst=0)
2016-09-21 15:00:00
2016-09-21 15:00:00+02:00
Run Code Online (Sandbox Code Playgroud) feedparser ×10
python ×8
rss ×5
django ×2
python-2.7 ×2
cgi ×1
datetime ×1
feed ×1
feeds ×1
homebrew ×1
mypy ×1
perl ×1
pip ×1
rss-reader ×1
ssl ×1
urlfetch ×1
urllib2 ×1
xml-parsing ×1