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

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

用浏览器浏览,发现在不登录的情况下也可以正常查看,那就简单多了。使用开发者工具(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 BeautifulSoupif __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 datetimetoday = 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 BeautifulSoupif __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 datetimetoday = 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 微博热搜

Python 超简单爬取微博热搜榜数据相关推荐

  1. python根据关键字爬取微博_Python 超简单爬取微博热搜榜数据

    微博的热搜榜对于研究大众的流量有非常大的价值.今天的教程就来说说如何爬取微博的热搜榜.热搜榜的链接是: https://s.weibo.com/top/summary/ 用浏览器浏览,发现在不登录的情 ...

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

    微博的热搜榜对于研究大众的流量有非常大的价值.今天的教程就来说说如何爬取微博的热搜榜.热搜榜的链接是: https://s.weibo.com/top/summary/ 用浏览器浏览,发现在不登录的情 ...

  3. c#使用正则表达式获取TR中的多个TD_使用python+BeautifulSoup爬取微博热搜榜

    本文将介绍基于Python使用BeautifulSoup爬取微博热搜榜的实现过程 1.首先导入需要使用的库 from bs4 import BeautifulSoup from urllib.requ ...

  4. python爬取微博热搜榜

    python爬取微博热搜榜 最近应我大学室友得需求,做了一个简单的爬虫案例,先给大家看一下程序运行效果 接下来就是贴出代码了,在这里我会做一些简单说明,对如刚入门的同学可能会有所帮助,这里使用的是py ...

  5. Python爬取微博热搜榜,将数据存入数据库

    一直想学习用Python来进行数据的爬取,也一直想知道Python连接数据库的操作,今天刚好看到的这篇文章满足了这两个条件,我试着爬了下微博,并成功将数据添加到数据库中,颇为欢喜.作者写的很简单,有些 ...

  6. 爬虫—爬取微博热搜榜

    1. 引言 利用scrapy框架爬取微博热搜榜网站前50条热搜. 爬取信息:热搜排名.热搜新闻名.热搜新闻热搜量. 数据存储:存储为.csv文件. 2.爬取流程 新建scrapy爬虫项目: 在终端输入 ...

  7. python爬取微博热搜榜教程,python爬取微博热搜并存入表格

    微博热搜的爬取较为简单,我只是用了lxml和requests两个库 url= https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&am ...

  8. python不间断爬取微博热搜并存储

    Q:想要记录实时的微博热搜分析某一类事件的热度怎么办? A: 采用python爬虫24小时不间断爬取微博热搜并存储到本地. 代码如下: # -*- coding: utf-8 -*- "&q ...

  9. python,selenium爬取微博热搜存入Mysql

    python爬取微博热搜存入Mysql 最终的效果 使用的库 目标分析 一:得到数据 二:链接数据库 总代码 最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站li ...

最新文章

  1. 北京python培训班价格-北京Python启蒙班
  2. # W3C 中文离线教程 2016 年版
  3. 在SQL Server引用dll的流程
  4. Linux 下安装 Oracle9i
  5. Java多线程实现异步调用
  6. IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法
  7. Linux定时函数介绍
  8. jdbc mysql innodb 死锁 deadlock_Mysql InnoDB 数据更新/删除导致锁表
  9. 计算机室 多媒体教室制度,专用教室、多媒体教室管理制度
  10. Xcode dSYM 文件
  11. 西门子定位器6DR5020-0NG00-0AA0
  12. 系统集成项目管理工程师是哪个部门发证?
  13. 晶体二极管的分类大全
  14. 《国际学术论文写作与发表》课后题
  15. 配对交易之统计套利配对:介绍
  16. 《统计学习方法》学习笔记(4)--k近邻法及常用的距离(or 相似度)度量
  17. 新浪微博模拟登录分析(含验证码)
  18. Bert算法:语言模型-BERT详细介绍
  19. 谷歌Android 9 Pie介绍及新功能
  20. 指纹辨识传感器解决方案

热门文章

  1. MySQL的常用操作
  2. FastDFS为什么要用Nginx做代理
  3. POSIX、libc、glibc概念的理解
  4. linux系统终端用户名和密码忘记了,主机大师(Linux)登录账户密码忘记的解决办法...
  5. Python实现复数运算
  6. 360手机java手机管家软件_360手机管家最新版下载_360手机管家官方下载-太平洋下载中心...
  7. 程序员可以时光倒流的话,你还会选择IT行业吗?再累也愿意!
  8. Go 项目自动生成接口文档
  9. 青甘大环线,蓝紫魔仙同游西北
  10. ZigBee协调器向子节点发消息