做网站的网站赚钱吗,晋城市企业网站,长沙网站建设制作,聊城网站建设的地方文章目录 一、关于 feedparser二、安装三、关于文档及构建四、测试五、常见RSS元素访问常见 Channel 元素访问常用项目元素 六、常见Atom元素访问常用feed元素访问公共入口元素 七、获取Atom元素的详细信息Feed元素的详细信息 八、测试元素是否存在九、其他功能 文档高级… 文章目录 一、关于 feedparser二、安装三、关于文档及构建四、测试五、常见RSS元素访问常见 Channel 元素访问常用项目元素 六、常见Atom元素访问常用feed元素访问公共入口元素 七、获取Atom元素的详细信息Feed元素的详细信息 八、测试元素是否存在九、其他功能 文档高级功能HTTP特性 十、Reference 一、关于 feedparser
github : https://github.com/kurtmckee/feedparser文档https://feedparser.readthedocs.io/en/latest/
在Python中解析Atom和RSSfeed。 二、安装
可以通过运行pip来安装
pip install feedparser三、关于文档及构建
feedparser 文档 https://feedparser.readthedocs.io/en/latest/ 它还包含在docs/目录中的源格式 ReST中。
要构建文档您需要Sphinx包下载地址https://www.sphinx-doc.org/
然后您可以使用类似于以下命令构建 HTML 页面
sphinx-build -b html docs/ fpdocs这将在fpdocs/目录中产生HTML文档。 四、测试
Feedparser 有一个广泛的测试套件由Tox提供支持。要运行它请键入以下内容
$ python -m venv venv
$ source venv/bin/activate # or venv\bin\activate.ps1 on Windows
(venv) $ python -m pip install --upgrade pip
(venv) $ python -m pip install tox
(venv) $ tox五、常见RSS元素
RSS feeds 中最常用的元素无论版本如何是标题、链接、描述、发布日期和条目ID。发布日期来自 pubDate 元素条目ID 来自guid元素。
此示例RSSfeed位于 https://feedparser.readthedocs.io/en/latest/examples/rss20.xml。
?xml version1.0 encodingutf-8?
rss version2.0
channel
titleSample Feed/title
descriptionFor documentation lt;emgt;onlylt;/emgt;/description
linkhttp://example.org//link
pubDateSat, 07 Sep 2002 00:00:01 GMT/pubDate
!-- other elements omitted from this example --
item
titleFirst entry title/title
linkhttp://example.org/entry/3/link
descriptionWatch out for lt;span stylebackground-image:
url(javascript:window.locationhttp://example.org/)gt;nasty
trickslt;/spangt;/description
pubDateThu, 05 Sep 2002 00:00:01 GMT/pubDate
guidhttp://example.org/entry/3/guid
!-- other elements omitted from this example --
/item
/channel
/rss通道元素在d.feed中可用。 访问常见 Channel 元素 import feedparserd feedparser.parse(https://feedparser.readthedocs.io/en/latest/examples/rss20.xml)d.feed.title
Sample Feedd.feed.link
http://example.org/d.feed.description
For documentation emonly/emd.feed.published
Sat, 07 Sep 2002 00:00:01 GMTd.feed.published_parsed
(2002, 9, 7, 0, 0, 1, 5, 250, 0)d.entries中的这些项目可用这是一个列表。
您可以按照它们在原始feed中出现的顺序 访问列表中的项目因此在d.entries[0]中的第一个项目可用。 访问常用项目元素 import feedparserd feedparser.parse(https://feedparser.readthedocs.io/en/latest/examples/rss20.xml)d.entries[0].title
First item titled.entries[0].link
http://example.org/item/1d.entries[0].description
Watch out for spannasty tricks/spand.entries[0].published
Thu, 05 Sep 2002 00:00:01 GMTd.entries[0].published_parsed
(2002, 9, 5, 0, 0, 1, 3, 248, 0)d.entries[0].id
http://example.org/guid/1注您还可以使用Atom术语 从RSSfeed访问数据。有关详细信息请参阅 Content Normalization 。 六、常见Atom元素
Atomfeed通常比RSSfeed包含更多信息因为需要更多元素但最常用的元素仍然是标题、链接、副标题/描述、各种日期和ID。
此示例Atomfeed https://feedparser.readthedocs.io/en/latest/examples/atom10.xml 。
?xml version1.0 encodingutf-8?
feed xmlnshttp://www.w3.org/2005/Atom
xml:basehttp://example.org/
xml:langen
title typetextSample Feed/title
subtitle typehtml
For documentation lt;emgt;onlylt;/emgt;
/subtitle
link relalternate href//
link relself
typeapplication/atomxml
hrefhttp://www.example.org/atom10.xml/
rights typehtml
lt;pCopyright 2005, Mark Pilgrimlt;/plt;
/rights
idtag:feedparser.org,2005-11-09:/docs/examples/atom10.xml/id
generator
urihttp://example.org/generator/
version4.0
Sample Toolkit
/generator
updated2005-11-09T11:56:34Z/updated
entry
titleFirst entry title/title
link relalternate
href/entry/3/
link relrelated
typetext/html
hrefhttp://search.example.com//
link relvia
typetext/html
hrefhttp://toby.example.com/examples/atom10/
link relenclosure
typevideo/mpeg4
hrefhttp://www.example.com/movie.mp4
length42301/
idtag:feedparser.org,2005-11-09:/docs/examples/atom10.xml:3/id
published2005-11-09T00:23:47Z/published
updated2005-11-09T11:56:34Z/updated
summary typetext/plain modeescapedWatch out for nasty tricks/summary
content typeapplication/xhtmlxml modexml
xml:basehttp://example.org/entry/3 xml:langen-US
div xmlnshttp://www.w3.org/1999/xhtmlWatch out for
span stylebackground: url(javascript:window.locationhttp://example.org/)
nasty tricks/span/div
/content
/entry
/feedfeed 元素在d.feed中可用。 访问常用feed元素 import feedparserd feedparser.parse(https://feedparser.readthedocs.io/en/latest/examples/atom10.xml)d.feed.title
Sample feedd.feed.link
http://example.org/d.feed.subtitle
For documentation emonly/emd.feed.updated
2005-11-09T11:56:34Zd.feed.updated_parsed
(2005, 11, 9, 11, 56, 34, 2, 313, 0)d.feed.id
tag:feedparser.org,2005-11-09:/docs/examples/atom10.xml条目在d.entries中可用这是一个列表。
您可以在 它们在原始feed中出现的顺序因此第一个条目是 d.entries[0]。 访问公共入口元素 import feedparserd feedparser.parse(https://feedparser.readthedocs.io/en/latest/examples/atom10.xml)d.entries[0].title
First entry titled.entries[0].link
http://example.org/entry/3d.entries[0].id
tag:feedparser.org,2005-11-09:/docs/examples/atom10.xml:3d.entries[0].published
2005-11-09T00:23:47Zd.entries[0].published_parsed
(2005, 11, 9, 0, 23, 47, 2, 313, 0)d.entries[0].updated
2005-11-09T11:56:34Zd.entries[0].updated_parsed
(2005, 11, 9, 11, 56, 34, 2, 313, 0)d.entries[0].summary
Watch out for nasty tricksd.entries[0].content
[{type: application/xhtmlxml,
base: http://example.org/entry/3,
language: en-US,
value: divWatch out for spannasty tricks/span/div}]注解析后的摘要和内容 与它们出现在 原始feed 不用。原始元素包含危险的超文本标记语言标记已被清理。详见 Sanitization 。
因为Atom条目可以有多个内容元素 d.entries[0].content是字典的列表。
每个字典包含 关于单个内容元素的元信息。
字典中最重要的两个值是 内容类型在d.entries[0].content[0].type中和 实际内容值在d.entries[0].content[0].value中。
您也可以在其他Atom元素上获得此详细级别。 七、获取Atom元素的详细信息
几个Atom元素共享Atom内容模型标题、副标题、权利、摘要当然还有内容。Atom 0.3也有一个共享此内容模型的info元素。
通用Feed Parser 捕获关于这些元素的所有相关元信息最重要的是体裁和值本身。 Feed元素的详细信息 import feedparserd feedparser.parse(https://feedparser.readthedocs.io/en/latest/examples/atom10.xml)d.feed.title_detail
{type: text/plain,
base: http://example.org/,
language: en,
value: Sample Feed}d.feed.subtitle_detail
{type: text/html,
base: http://example.org/,
language: en,
value: For documentation emonly/em}d.feed.rights_detail
{type: text/html,
base: http://example.org/,
language: en,
value: pCopyright 2004, Mark Pilgrim/p}d.entries[0].title_detail
{type: text/plain,
base: http://example.org/,
language: en,
value: First entry title}d.entries[0].summary_detail
{type: text/plain,
base: http://example.org/,
language: en,
value: Watch out for nasty tricks}len(d.entries[0].content)
1d.entries[0].content[0]
{type: application/xhtmlxml,
base: http://example.org/entry/3,
language: en-US
value: divWatch out for span nasty tricks/span/div}八、测试元素是否存在
现实世界中的Feeds可能缺少元素甚至是规范要求的元素。
在获取元素值之前您应该始终测试元素的存在。永远不要假设元素存在。
要测试元素是否存在可以使用标准Python字典习语。 import feedparserd feedparser.parse(https://feedparser.readthedocs.io/en/latest/examples/atom10.xml)title in d.feed
Truettl in d.feed
Falsed.feed.get(title, No title)
Sample feedd.feed.get(ttl, 60)
60九、其他功能 文档 高级功能
日期解析日期格式的历史识别日期格式支持其他日期格式Sanitization HTML SanitizationSVG SanitizationMathML SanitizationCSS Sanitization列入白名单不要列入黑名单 内容标准化将Atom feed 作为RSS feed 访问将RSS feed 作为Atom feed 访问命名空间处理访问命名空间元素使用非标准前缀 访问命名空间元素Relative Link Resolution 哪些值是URI如何解决相对URI禁用相对URI解析 Feed Type and Version Detection feed类型和版本检测 访问feed版本 字符编码检测字符编码简介处理 Incorrectly-Declared 编码处理 Incorrectly-Declared 媒体类型Bozo 检测 检测格式不正确的反馈 HTTP特性
ETag 和最后修改的头文件 使用ETags减少带宽使用Last-Modified 头文件来减少带宽 User-Agent和Referer 头文件 自定义 User-Agent永久自定义 User-Agent自定义 referrer HTTP重定向 注意临时重定向注意永久重定向注意标记为“gone”的feeds 受密码保护的feed 下载 受基本鉴权保护 的 feed简单方法下载 受摘要鉴权保护的feed简单但非常不安全的方式下载受HTTP基本鉴权保护的feed硬方法下载受HTTP摘要鉴权保护的feed安全方式确定feed受密码保护 其他HTTP 头文件 发送自定义HTTP请求 头文件 访问其他HTTP响应 头文件 十、Reference
bozobozo_exceptionencodingentriesentries[i\].authorentries[i].author_detail entries[i\].author_detail.nameentries[i\].author_detail.hrefentries[i\].author_detail.email entries[i\].commentsentries[i].content entries[i\].content[j].valueentries[i\].content[j].typeentries[i\].content[j].languageentries[i\].content[j].base entries[i].contributors entries[i\].contributors[j].nameentries[i\].contributors[j].hrefentries[i\].contributors[j].email entries[i\].createdentries[i\].created_parsedentries[i].enclosures entries[i\].enclosures[j].hrefentries[i\].enclosures[j].lengthentries[i\].enclosures[j].type entries[i\].expiredentries[i\].expired_parsedentries[i\].identries[i\].licenseentries[i\].linkentries[i].links entries[i\].links[j].relentries[i\].links[j].typeentries[i\].links[j].hrefentries[i\].links[j].title entries[i\].publishedentries[i\].published_parsedentries[i\].publisherentries[i].publisher_detail entries[i\].publisher_detail.nameentries[i\].publisher_detail.hrefentries[i\].publisher_detail.email entries[i].source entries[i\].source.authorentries[i\].source.author_detailentries[i\].source.contributorsentries[i\].source.iconentries[i\].source.identries[i\].source.linkentries[i\].source.linksentries[i\].source.logoentries[i\].source.rightsentries[i\].source.rights_detailentries[i\].source.subtitleentries[i\].source.subtitle_detailentries[i\].source.titleentries[i\].source.title_detailentries[i\].source.updatedentries[i\].source.updated_parsed entries[i\].summaryentries[i].summary_detail entries[i\].summary_detail.valueentries[i\].summary_detail.typeentries[i\].summary_detail.languageentries[i\].summary_detail.base entries[i].tags entries[i\].tags[j].termentries[i\].tags[j].schemeentries[i\].tags[j].label entries[i\].titleentries[i].title_detail entries[i\].title_detail.valueentries[i\].title_detail.typeentries[i\].title_detail.languageentries[i\].title_detail.base entries[i\].updatedentries[i\].updated_parsedetagfeedfeed.authorfeed.author_detail feed.author_detail.namefeed.author_detail.hreffeed.author_detail.email feed.cloud feed.cloud.domainfeed.cloud.portfeed.cloud.pathfeed.cloud.registerProcedurefeed.cloud.protocol feed.contributors feed.contributors[i\].namefeed.contributors[i\].hreffeed.contributors[i\].email feed.docsfeed.errorreportstofeed.generatorfeed.generator_detail feed.generator_detail.namefeed.generator_detail.hreffeed.generator_detail.version feed.iconfeed.idfeed.image feed.image.titlefeed.image.hreffeed.image.linkfeed.image.widthfeed.image.heightfeed.image.description feed.infofeed.info_detail feed.info_detail.valuefeed.info_detail.typefeed.info_detail.languagefeed.info_detail.base feed.languagefeed.licensefeed.linkfeed.links feed.links[i\].relfeed.links[i\].typefeed.links[i\].hreffeed.links[i\].title feed.logofeed.publishedfeed.published_parsedfeed.publisherfeed.publisher_detail feed.publisher_detail.namefeed.publisher_detail.hreffeed.publisher_detail.email feed.rightsfeed.rights_detail feed.rights_detail.valuefeed.rights_detail.typefeed.rights_detail.languagefeed.rights_detail.base feed.subtitlefeed.subtitle_detail feed.subtitle_detail.valuefeed.subtitle_detail.typefeed.subtitle_detail.languagefeed.subtitle_detail.base feed.tags feed.tags[i\].termfeed.tags[i\].schemefeed.tags[i\].label feed.textinput feed.textinput.titlefeed.textinput.linkfeed.textinput.namefeed.textinput.description feed.titlefeed.title_detail feed.title_detail.valuefeed.title_detail.typefeed.title_detail.languagefeed.title_detail.base feed.ttlfeed.updatedfeed.updated_parsedheadershrefmodifiednamespacesstatusversion 2024-06-07五