首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >识别itunes:关键字和itunes:类别单独与反馈解析器?

识别itunes:关键字和itunes:类别单独与反馈解析器?
EN

Stack Overflow用户
提问于 2018-08-22 08:02:37
回答 2查看 386关注 0票数 1

我使用馈电分析器解析rss (如https://www.relay.fm/analogue/feed ),但无法确定如何显式地标识itunes:category值。

查看反馈解析器itunes测试itunes:keywordsitunes:category值似乎都被放入了feed['tags']字典中。

来自category的测试

代码语言:javascript
复制
<!--
Description: iTunes channel category
Expect:      not bozo and feed['tags'][0]['term'] == 'Technology'
-->
<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd">
    <channel>
        <itunes:category text="Technology"></itunes:category>
    </channel>
</rss>

然后是keywords

代码语言:javascript
复制
<!--
Description: iTunes channel keywords
Expect:      not bozo and feed['tags'][0]['term'] == 'Technology' and 
'itunes_keywords' not in feed
-->
<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd">
    <channel>
        <itunes:keywords>Technology</itunes:keywords>
    </channel>
</rss>

对于上面的示例提要,条目如下:

代码语言:javascript
复制
<itunes:keywords>Hurley, Liss, feelings</itunes:keywords>

代码语言:javascript
复制
<itunes:category text="Society &amp; Culture"/>
<itunes:category text="Technology"/>

其结果是按如下方式填充feed[tags]

代码语言:javascript
复制
[{'label': None, 'scheme': 'http://www.itunes.com/', 'term': 'Hurley'},
 {'label': None, 'scheme': 'http://www.itunes.com/', 'term': 'Liss'},
 {'label': None, 'scheme': 'http://www.itunes.com/', 'term': 'feelings'},
 {'label': None,'scheme': 'http://www.itunes.com/','term': 'Society & Culture'},
 {'label': None, 'scheme': 'http://www.itunes.com/', 'term': 'Technology'}]

有没有办法唯一地标识来自itunes:category标记的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-24 13:46:00

我无法在馈电分析器中找到这样的方法,所以我也使用了美汤

代码语言:javascript
复制
import bs4

soup = bs4.BeautifulSoup(raw_data, "lxml")        

def is_itunes_category(tag):
        return tag.name == 'itunes:category'

categories = [tag.attrs['text'] for tag in soup.find_all(is_itunes_category)]
票数 1
EN

Stack Overflow用户

发布于 2021-05-07 22:59:28

Feed分析器诉6.0.2实现特定的itunes:x属性

  • itunes:category在feedparser解析器中可作为category提供。
代码语言:javascript
复制
import feedparser
feedp = feedparser.parse(url)
category = feedp.feed.category 
  • itunes:keywords确实在indeed解析器中被重命名为tags,并被填充到term中。

但是,通道关键字与项目关键字混合使用scheme作为过滤器来分别识别项目关键字。

代码语言:javascript
复制
import feedparser
feedp = feedparser.parse(url)
#get all the keywords both item and channel
keywords = [k["term"] for k in feedp["feed"]["tags"]] 
# get the keywords from all the items 
keyword = [t["term"] for t in feedp["feed"]["tags"] if  t["scheme"] == 'http://www.itunes.com/']

如果可用,这可能会擦除其他标记,但如果itunes:关键字和标记共存,则它们是重复的。

  • itunes:duration可作为itunes_duration提供
代码语言:javascript
复制
import feedparser
feedp = feedparser.parse(url)
duration = feedp["itunes_duration"] 

有点离题,但要完整地回答:

如果有多个类别可用,它们将以元组的形式公开,如文档中所述。

代码语言:javascript
复制
>>>import feedparser
>>>feedp = feedparser.parse(url)
>>>categories = feedp.feed.categories 
>>>print(categories)
>>>[(u'Syndic8', u'1024'),
(u'dmoz', 'Top/Society/People/Personal_Homepages/P/')]

但itunes没有多个类别..。

不需要再用beautifulSoup4进行解析了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51962329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档