python爬取微博热搜_Python 超简单爬取微博热搜榜数据

微博的热搜榜对于研究大众的流量有非常大的价值。今天的教程就来说说如何爬取微博的热搜榜。 热搜榜的链接是:

用浏览器浏览,发现在不登录的情况下也可以正常查看,那就简单多了。使用开发者工具(F12)查看页面逻辑,并拿到每条热搜的CSS位置,方法如下:

按照这个方法,拿到这个td标签的selector是:

pl_top_realtimehot > table > tbody > tr:nth-child(3) > td.td-02 其中nth-child(3)指的是第三个tr标签,因为这条热搜是在第三名的位置上,但是我们要爬的是所有热搜,因此:nth-child(3)可以去掉。还要注意的是 pl_top_realtimehot 是该标签的id,id前需要加#号,最后变成: #pl_top_realtimehot > table > tbody > tr > td.td-02

你可以自定义你想要爬的信息,这里我需要的信息是:热搜的链接及标题、热搜的热度。它们分别对应的CSS选择器是:

链接及标题:#pl_top_realtimehot > table > tbody > tr > td.td-02 > a

热度:#pl_top_realtimehot > table > tbody > tr > td.td-02 > span

值得注意的是链接及标题是在同一个地方,链接在a标签的href属性里,标题在a的文本中,用beautifulsoup有办法可以都拿到,请看后文代码。

现在这些信息的位置我们都知道了,接下来可以开始编写程序。默认你已经安装好了python,并能使用cmd的pip,如果没有的话请见这篇教程:python安装。需要用到的python的包有:

BeautifulSoup4:

cmd/Terminal 安装指令:

pip install beautifulsoup4

lxml解析器:

cmd/Terminal 安装指令:

pip install lxml

lxml是python中的一个包,这个包中包含了将html文本转成xml对象的工具,可以让我们定位标签的位置。而能用来识别xml对象中这些标签的位置的包就是 Beautifulsoup4.

编写代码:

# https://s.weibo.com/top/summary/

import requests

from bs4 import BeautifulSoup

if __name__ == "__main__":

news = []

# 新建数组存放热搜榜

hot_url = 'https://s.weibo.com/top/summary/'

# 热搜榜链接

r = requests.get(hot_url)

# 向链接发送get请求获得页面

soup = BeautifulSoup(r.text, 'lxml')

# 解析页面

urls_titles = soup.select('#pl_top_realtimehot > table > tbody > tr > td.td-02 > a')

hotness = soup.select('#pl_top_realtimehot > table > tbody > tr > td.td-02 > span')

for i in range(len(urls_titles)-1):

hot_news = {}

# 将信息保存到字典中

hot_news['title'] = urls_titles[i+1].get_text()

# get_text()获得a标签的文本

hot_news['url'] = "https://s.weibo.com"+urls_titles[i]['href']

# ['href']获得a标签的链接,并补全前缀

hot_news['hotness'] = hotness[i].get_text()

# 获得热度文本

news.append(hot_news)

# 字典追加到数组中

print(news)

代码说明请看注释,不过这样做,我们仅仅是将结果保存到数组中,如下所示,其实不易观看,我们下面将其保存为csv文件。

Python 热搜榜爬虫

import datetime

today = datetime.date.today()

f = open('./热搜榜-%s.csv'%(today), 'w', encoding='utf-8')

for i in news:

f.write(i['title'] + ',' + i['url'] + ','+ i['hotness'] + 'n')

效果如下,怎么样,是不是好看很多:

Python 微博热搜榜爬虫

完整代码如下:

# https://s.weibo.com/top/summary/

import requests

from bs4 import BeautifulSoup

if __name__ == "__main__":

news = []

# 新建数组存放热搜榜

hot_url = 'https://s.weibo.com/top/summary/'

# 热搜榜链接

r = requests.get(hot_url)

# 向链接发送get请求获得页面

soup = BeautifulSoup(r.text, 'lxml')

# 解析页面

urls_titles = soup.select('#pl_top_realtimehot > table > tbody > tr > td.td-02 > a')

hotness = soup.select('#pl_top_realtimehot > table > tbody > tr > td.td-02 > span')

for i in range(len(urls_titles)-1):

hot_news = {}

# 将信息保存到字典中

hot_news['title'] = urls_titles[i+1].get_text()

# get_text()获得a标签的文本

hot_news['url'] = "https://s.weibo.com"+urls_titles[i]['href']

# ['href']获得a标签的链接,并补全前缀

hot_news['hotness'] = hotness[i].get_text()

# 获得热度文本

news.append(hot_news)

# 字典追加到数组中

print(news)

import datetime

today = datetime.date.today()

f = open('./热搜榜-%s.csv'%(today), 'w', encoding='utf-8')

for i in news:

f.write(i['title'] + ',' + i['url'] + ','+ i['hotness'] + 'n')

​Python实用宝典 (pythondict.com)

不只是一个宝典

欢迎关注公众号:Python实用宝典

原文来自Python实用宝典:Python 微博热搜

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode14 Longest Common Prefix

题意: Write a function to find the longest common prefix string amongst an array of strings. (Easy) 这两天实验室项目太忙了, 老板各种活,只能挑着先水几道easy题,这两个题是昨天做的没来得及写总结。 分析: 暴…

类加载器ClassLoader的角色

类加载器ClassLoader的角色

软件项目管理:进度管理相关概念介绍

软件项目管理当中,项目进度的合理安排是如期完成软件项目的重要基础,也是合理分配资源的重要依据。项目进度安排是项目管理工作当中非常重要的组成部分。软件开发项目进度安排的方式:1、系统最终交付日期已经确定,软件开发部门必须…

ios开发 多人语音聊天_手游语音市场的现状、机遇与挑战

文/手游那点事小鱼原创2014年持续火热的手游市场成就了一大批企业的上市梦,同时也在大环境下产生了对系列手游增值服务的需求。基于玩家对手游社交性的需求,以及借鉴传统端游,页游中成功的社交体系,手游市场逐步出现了对手游语音的…

linux 下运行 tomcat

一开始找不到表名,原来mysql 表名区分大小写。 修改参数 lower_case_table_names1 成功运行后不能通过浏览器访问! 开启8080端口 一、关闭防火墙 firewall-cmd --state 查看状态 [rootVM_7_88_centos /]# firewall-cmd --state running [rootVM_7_88…

软件项目管理:软件工具与开发环境相关知识介绍

1、软件工具相关名词概念软件工具:用来辅助软件开发、运行、维护、管理等过程中的活动软件。软件开发环境:是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。软件工具集:包括支持软件开发相关过程、活动、任务的…

apollo java客户端_携程配置中心Apollo的Java客户端API的使用

一、SpringBoot集成1.发布配置信息设置本机为DEV环境:Linux在/opt/settings/server.properties增加配置envDEV,windows在c:\opt\settings\server.properties图1 在apollo portal上新建项目后,默认就有了application命名空间。在DEV环境下新建…

JNI----Native本地方法接口

Native本地方法接口 JNI:Java Native Interface 本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合C/C程序 native:凡是带native关键字的,说明java的作用范围达不到了,会去调用底层c语言的库&#xff01…

python的flag是什么意思_网上老说的flag是什么意思

近些年,国内的网络发展速度还是很快的,大家可以通过网络了解很多的东西,因此网络上也有很多热词开始流行起来,其中flag算是十分流行的一个词汇,网上老说的flag是什么意思?立个flag是什么梗?可能还有一些朋友并不是很…

项目管理基础:系统分析相关概念介绍

1、系统分析的主要任务系统分析主要任务是对现行的系统进一步详细调查,将调查得到的资料集中,对组织内部整体管理状况和信息处理过程进行分析,为系统开发提供所需要的资料,并提交系统方案说明书。2、系统分析的主要阶段系统分析主…

java线程池和线程实例化_浅谈Java 线程池原理及使用方式

一、简介什么是线程池?池的概念大家也许都有所听闻,池就是相当于一个容器,里面有许许多多的东西你可以即拿即用。java中有线程池、连接池等等。线程池就是在系统启动或者实例化池时创建一些空闲的线程,等待工作调度,执…

线性代数及其应用_线性代数入门——行列式的简单应用选讲

系列简介:这个系列文章讲解线性代数的基础内容,注重学习方法的培养。线性代数课程的一个重要特点(也是难点)是概念众多,而且各概念间有着千丝万缕的联系,对于初学者不易理解的问题我们会不惜笔墨加以解释。在内容上,以…

RocketMQ 使用及常见问题

前言 本文档是针对RocketMQ使用及常见问题的说明。 一.获取项目、安装包及文档 1. alibaba/RocketMQ https://github.com/alibaba/RocketMQ 2. Download the latest release package https://github.com/alibaba/RocketMQ/releases 3.…

系统开发基础:UML相关知识笔记

1、UML概念统一建模语言(Unified Modeling Language UML)是面向对象软件的标准建模语言。由于简单、统一,又能够表达软件设计中的动态和静态信息。目前UML已经成为可视化建模语言的工业标准。2、UML的组成UML三要素:构造块、规则、…

java中什么是运行异常_在java中最常用的运行时异常是什么?

我从不会抛出NullPointerException。对我来说,它是一个出现在代码中当出现问题时,需要开发人员看看会发生什么。然后(s)他固定的原因,它不会再次发生。我使用IllegalStateException表示对象配置不正确或调用的顺序不正确。但是,我…

迭代器 java_面试必备(含答案):30 个 Java 高频面试问题

Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几…

硬件基础:台式电脑上的常用的几个接口!

今天给大家详细讲解台式电脑上的常用的几个接口!1、I/O接口部分下图所有的接口,也是我们机箱后面的接口,统称为:I/O接口。2、键鼠PS/2PS/2接口是I/O接口中比较常见的一种接口,用来连接键盘和鼠标,二者可以用…

CSS-DOM介绍

三位一体的网页: 我们在浏览器里看到的网页其实是由以下三层信息构成的一个共同体: 1、结构层: 结构层是由HTML和XHTML之类的标记语言所构成的。所就是哪些出现在html标签里面的单词,对网页内容的语义含义作出了如下描述&#xff0c;例如&#xff0c;<p>This is a paragr…