python爬取知乎热榜了解时事

python爬取知乎热榜了解时事

需求

​ 知乎热榜是我们了解时事的一个重要途径,但是如果我们每天没有那么多时间来刷知乎,但是还是想要了解知乎热榜的话,我们该怎么办呢?在这里,我想到了通过知乎爬虫的手段,获取知乎热榜的标题和简介,保存到本地文件,从而获取到每一天的知乎热榜内容,这样,我们只需要查看本地文件内容,就可以快速的了解今天一天的时事。

设计

首先进入知乎热榜的界面,链接为

https://www.zhihu.com/billboard

进入链接后可看到如下页面:

在这里插入图片描述

右键检查打开开发者工具,首先选择网络进行抓包:
在这里插入图片描述

通过网络进行抓包,查看billboard文件,进行预览,可以看见在知乎热榜界面的内容基本都可以看见(提示:如果出现不可预览,可试着禁用JavaScrip在进行抓包),所以,获取热榜标题,我们可以直接在代码树(element)中得到。 但是我们会发现在预览界面没有热榜内容的简介。说明热榜内容的简介是由浏览器进行渲染得到的,而不是在数据包中获取的。
这时,右键选择查看源代码:

在这里插入图片描述

在热榜界面,我们随便点开一个热榜,复制简介的一部分内容,在源代码界面,按住ctrl+F进行搜索,搜索刚才复制的简介内容,从而分析在浏览器获取到的源代码中是否存在简介的内容。

在这里插入图片描述

这时,我们发现,在浏览器的源代码中存在我们要查询的热榜简介的内容。所以,我们可以通过正则表达式在获取到的源代码中得到简介的内容。

代码

首先,引入必要的包库

import requests
import re
from bs4 import BeautifulSoup

定义知乎热榜的url

url = 'https://www.zhihu.com/billboard'

因为知乎热榜的页面有一定的反扒设置,所以我们加入必要的请求头(cookie和user-agent)

headers = {
    
    
    'user-agent': #你自己的user-agent
    'cookie': #你自己的cookie
}

之后获取页面的原代码,加入Beautifulsoup,通过代码树进行信息搜索,再通过re正则表达式,在页面源代码中搜索简介内容。

html = requests.get(url, headers=headers)
soup = BeautifulSoup(html.text, 'lxml')
titles = soup.select('a.HotList-item .HotList-itemBody .HotList-itemTitle')
re_content = re.compile('"excerptArea":{"text":"(.*?)"},', re.I|re.S)
results = re_content.findall(html.text)

最后,如果想要更加方便的话,我们可以将搜集到的信息全部存到一个文件中,后续,我们还可以加入每天定时发送热榜信息的文件到自己邮箱中,从而彻底实现每天不用打开知乎,而可以很轻松的了解到知乎热榜的时事内容,如果看见自己感兴趣的可以再打开网页进行详细观看。

以上就是关于python爬取知乎热榜的全部内容。

如果觉得一段一段复制比较麻烦,有需要获取完整代码的可点击一下链接进行下载:

https://download.csdn.net/download/weixin_46784800/33263200

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46784800/article/details/120837129