网站调用新浪微博内容(博文的数据表示并不统一发博文用户的昵称、Uid)
优采云 发布时间: 2021-11-28 12:32网站调用新浪微博内容(博文的数据表示并不统一发博文用户的昵称、Uid)
但是,博客文章的数据表示并不统一。发表博文的用户的昵称、Uid、首页链接作为属性存储在标签中,博文的发表时间作为属性存储在标签中;博文的内容直接以HTML文本的形式存储在标签中,博文的转发数、评论数、点赞数存储在结构中,具体值存储在HTML 文本形式的标记。另外,博文的转发、评论、点赞数与转发博文的转发、评论、点赞数不同。
也正是由于这些差异,仅仅通过标签过滤是难以有效获取所需数据的。为了方便提取微博数据,本文使用lxml作为微博页面分析的工具。lxml 是用于 HTML/XML 解析和构建 DOM 的第三方 Python 库。可以快速灵活地处理XML格式的文档,支持XPath和XSLT,收录ElementTree、html5lib、BeautfulSoup等库。
HTML解析器使用lxml,可以使用以下语句快速解析获取到的微博页面,建立节点化的DOM结构:
将 lxml.html.soupparser 导入为 soupparser
将 lxml.etree 导入为 etree
dom=soupparser.fromstring(html)
etree.tostring(dom)
这时候只要根据分析的微博页面结构,一一访问DOM中的相关节点,就可以获取到所需的微博数据。
2.4 延迟加载处理
新浪微博页面刷新时,使用了Ajax的Lazy Load技术。开始时,页面上的所有博文都不会被加载和显示,但只会加载和显示 15 篇博文。当滚动条滚动到页面底部时,会自动加载另外 15 篇博文。所以一个完整的微博页面需要滚动和加载两次才能获得全部 45 篇博文。