总结:Python数据采集案例(1):微博热搜榜采集

优采云 发布时间: 2020-08-31 13:03

  Python数据采集案例(1): 微博热点搜索列表采集

  实现目标

  本案例通过图片和文字详细介绍了网络请求和分析的方法. 实现该目标的要求是通过网络请求获取微博热搜索列表中的前50个热搜索关键字,并将结果打印到控制台中.

  实现过程

  通常,数据采集采集器的实现过程包括以下步骤:

  接下来,我们按照上述步骤一步一步完成.

  确定数据所在的网址

  打开微博热点搜索列表,即网址为:

  

  首先,我们需要确定目标数据是存在于页面上还是通过Ajax加载. 我们可以在浏览器中右键单击(建议使用Chrome浏览器),然后选择“查看网页源代码”.

  

  这时,浏览器将打开一个新页面,并将视图源部分添加到Url(网页地址)之前,并且该网页中显示的关键字是当前网页的源代码.

  

  我们使用快捷键Ctrl + F打开搜索框,并在网页的源代码中搜索显示在顶部搜索页面上的文本. 例如,搜索排名最高的“在神仙桥上发现的北宋古墓”,您可以找到网页的源代码中存在关键字,这意味着热门搜索列表直接加载到页面上,而不是通过Ajax. 目前,我们只需要直接请求网页的URL即可获取热门搜索列表数据.

  网页请求

  下面,我们使用请求模块执行网页请求并打印请求结果. 代码如下:

  import requests

if __name__ == "__main__":

response = requests.get("https://s.weibo.com/top/summary")

print(response.content.decode())

  在印刷的内容中,我们通过搜索再次发现了“北宋发现的穿越神仙桥的古墓”,这表明我们的请求成功获得了热门搜索数据,没有任何问题.

  网页分析

  再次返回浏览器,右键单击并选择“检查”以打开浏览器控制台(或直接使用快捷键F12打开控制台).

  

  选择元素选择工具.

  

  在元素选择模式下(元素选择工具的小箭头为蓝色),单击我们需要采集的信息.

  

  这时,浏览器控制台将找到目标信息所在的标签.

  

  我们右键单击标签,选择“复制”,然后选择“复制选择器”以复制标签的CSS选择器路径. 该路径用于定位当前标签. 例如,第一个热搜索关键字所在的标签的CSS选择器为:

  #pl_top_realtimehot > table > tbody > tr:nth-child(2) > td.td-02 > a

  #pl_top_realtimehot表示ID为pl_top_realtimehot的标签,即下图第一行中的div标签;> table表示当前标签的下一层的表标签,即下图的第二行; tr: nth -child(2)表示当前标签下的第二个tr标签,即下图中选择的tr标签.

  

  通过观察网络结构,我们可以发现每个热搜索在tbody标签下面是一个独立的tr标签;因此,要同时获得不同的热门搜索关键字,我们只需要不再限制指定的tr即可. 只需删除标签,即删除tr: nth-​​child(2)中的: nth-​​child(2)即可. CSS选择器路径.

  #pl_top_realtimehot > table > tbody > tr > td.td-02 > a

  在浏览器控制台的“元素”选项卡中,使用Ctrl + F快捷键打开搜索框,然后在搜索框中搜索修改后的CSS选择器路径. 可获得51个结果,表明可以同时使用修改后的CSS选择器. 匹配所有热门搜索关键字.

  

  下面,我们使用Python的第三方模块-BeautifulSoup模块(pip install命令: pip install BeautifulSoup4)实施分析,其中包括以下请求代码:

  import requests

from bs4 import BeautifulSoup

if __name__ == "__main__":

response = requests.get("https://s.weibo.com/top/summary")

bs = BeautifulSoup(response.content.decode(), 'lxml')

for keyword_label in bs.select("#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"):

print(keyword_label.text)

  运行结果已经可以将所有热门搜索打印到控制台,从而实现当前需求.

  10个关键词把握2020中国经济走势

北宋古墓发现过仙桥

香港各界发起联署支持国家安全立法

马路惊现非洲雄狮

澳门所有大中小学升国旗唱国歌全覆盖

......

  这一系列案例采集中的所有数据只能用于学习和研究目的!

  案例要求说明: 因此,微博热点搜索列表是实时更新的,因此相对完整的采集要求如下: 每3分钟采集一次微博热点搜索列表中排名前49位的热门搜索(忽略广告第3条中的信息),并将结果存储在数据库中. 该数据库至少应收录采集时间,等级(等级),关键字(关键字),受欢迎程度(热门),类型(类型)和其他字段. 完整的案例将在后续内容中进行解释.

  案例说明的解释: 作为第一个案例,本文通过图片和文字详细解释了每个步骤,随后的案例将集中在思想上.

  扩展链接是Github项目链接.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线