优秀的编程知识分享平台

网站首页 > 技术文章 正文

Python爬虫自学笔记:分析头条文章网页源文件

nanyue 2024-07-18 22:26:23 技术文章 7 ℃



这两天分析了一下头条文章网页的源文件,现在将分析的结果分享给大家。

首先以一篇文章为例,其网址如下:

https://www.toutiao.com/i6822245428176617998/

如上图网页所示,文章中包含文字和图片。

下面来看一下页面的源文件,发现正文的内容没有在常规的<p></p>标签内,而是在<script></script>标签中,如下图所示:

这次不使用BeautifulSoup来解析页面,直接使用find()命令在源码中定位,提取源码中的title和content内容。

首先用requests请求页面,查看返回结果,如下图:

通过查看文章标题和正文的上下代码,发现articleInfo和subInfo是源码中唯一标签属性信息,这样可以在源码的基础上提取它们之间的代码信息,即含有文章标题和正文内容。且在title和content的结尾有代码slice(6,6),这是去除字符串前6和后6的字符串,保留中间值。

定义get_title_content()函数,实现提取title和content信息,具体代码如下:

get_title_content()函数源码:

# 提取title和content
def get_title_content(text):
    # 查找articleInfo
    articleInfo_id = r.text.find("articleInfo")
    subInfo_id = r.text.find("subInfo")
    articleInfo = r.text[articleInfo_id:subInfo_id]

    # 查找articleInfo中的title和content
    title_id = articleInfo.find("title")
    content_id = articleInfo.find("content")
    groupId_id = articleInfo.find("groupId")
    title = articleInfo[title_id:content_id].split("'")[1]
    content = articleInfo[content_id:groupId_id].split("'")[1]

    return title[6:-6],content[6:-6]

主函数运行代码(省略了请求网页的代码):

		# 提取title和content
    title,content = get_title_content(r.text)
    print(title)
    print(content)

代码运行结果如下:

如上图所示,content的内容中包含了\u003c、\"等特殊字符,下面该研究如何将这些特殊字符转为常规的字符。

突然感觉时间不够用啊,花了两天功夫才提取了文章的标题和正文,每天只有晚上一点点时间来研究Python,时间好少的感觉有木有。

今天就到这里了,明天继续研究,如何将content内容中的特殊字符串转成常规的字符串。

感兴趣的朋友可以关注一下哈,和我一起来尝试将头条文章保存到本地存储。有经验的朋友可以多提提意见哈。

最近网上各种版权事件飞起,什么合法不合法的,什么侵犯权益的啊,好烦的有木有。本文在这里加一个免责说明吧,本文纯属用于学习、研究、探讨,不做商业用途,如果有侵权或其他违法情况,可以联系我删除,谢谢。

Tags:

最近发表
标签列表