本文将介绍基于Python使用BeautifulSoup爬取微博热搜榜的实现过程

1、首先导入需要使用的库

from bs4 import BeautifulSoup
from urllib.request import urlopen
import re

2、打开网页,将饱满的网页做成美味的汤(滑稽)。

注意decode('utf-8')是为了解析并显示中文网站,features='lxml'是为了使用‘lxml’的格式进行解析。

url="https://s.weibo.com/top/summary?cate=realtimehot"
html=urlopen(url).read().decode('utf-8')
soup=BeautifulSoup(html,features='lxml')

3、重中之重——找规律

观察网页源代码,提取规律(即rank,name和number),我们以前三条为例子进行观察,可以发现rank信息都位于tr下td的class=''td-01 ranktop''中,name位于<a中的target=“_blank”中,而number位于'span'中。

通过分析,其实rank和number是最容易爬取的。先获取网页中所有的tr信息,直接使用函数即可。

information=soup.find_all('tr')
information=information[2:]

请避开坑!!!微博热搜页面共有52个tr,包含1个页面中序号和关键词的tr,1个置顶微博的tr和50个热搜的tr。所以要取information的后50个。

4、找到规律之后就可以愉快的提取信息了。

首先创建相关列表用于存储结果,然后进行信息提取。我们对于提取到的每一个tr进行进一步的搜索,如上文所述,我们可以很简单的就提取出来rank和number信息。但对于name,为什么会有个if呢?值得思考。

rank=[]
news=[]
zan_num=[]
for each in information:rank_temp=each.find('td',{'class':'td-01 ranktop'})#获取排名if each.find('a',{'target':'_blank'}) is None: #获取新闻news.append(each.find('a')['word'])else:news.append(each.find('a',{'target':'_blank'}).get_text())num=each.find('span')#获取新闻rank.append(rank_temp.get_text())zan_num.append(num.get_text())

说来话长,PX炼丹师前期总是报错,百思不得其解,Debug中发现微博页面中,有的微博在网页源代码并不是在target=“_blank”中,而是如下图所示。

我们对比“OK手势被列入种族仇恨符号”和”get热巴桃花滤镜“,”陆江涛顾亦雄打赌“,可以发现后两个居然存在'word'中,所以对target进行提取结果是None,因此就需要加个判断,毕竟还是正常的微博多。

5、最后,就是格式输出了,大家可以自由发挥,既可以直接输出,也可以存储到excel中。请自便~

print("{0:<10}t{1:{3}<30}t{2:{3}>11}".format('rank','name','num', chr(12288)))
for i in range(len(rank)):print("{0:<10}t{1:{3}<30}t{2:{3}>11}".format(rank[i],news[i],zan_num[i],chr(12288)))

6、运行结果

对了,如果更完善一点,还可以读取置顶微博,并将其同时显示出来。

7、结语

有的小伙伴可能会想这么优秀的程序能不能转化成可执行的exe,用于撩妹(/dog.jpg),毕竟不是所有的人都装了PyCharm。那么接下顺带讲一下生成exe的方法。

1.把hello.py文件拷贝到D:pythonscripts(根据自己实际存储情况)
2.cmd命令 在scripts目录下输入,输入>pyinstaller -F hello.py
3.在scripts目录下会产生dist文件夹,hello.exe就在其中。

接下来是生成excel的方法,毕竟如果爬取更多信息的网站,表格更方便美观一些。存储成excel的方法也很简单,看代码。

import pandas as pd
data = pd.DataFrame()
data[’rank'] = rank
data['name'] = news
data['number'] = zan_num
data.to_excel('weibohot.xlsx', index=False)

首先,导入pands库,产生Datafram格式,然后存储列名,并进行赋值,最后data.to_excel即可,index=False是指excel中不加入行索引。

8、最后的最后

相信各位强迫症患者一定不能忍受结果中百万、十万和万量级数字不对齐,PX炼丹师找了很久也没有办法解决,如果哪位强迫症晚期患者能够解决,一定记得私信我~

好啦,大家可以取爬取所需的各类网站了,国庆愉快~

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

  1. 爬虫实例:正则表达式爬取微博热搜榜

    最近在学习python的爬虫知识,分享一个爬取微博热搜的实例,代码很简单. 用到了requests,re,xlwt库 直接看图: #1导入模块 import requests import re im ...

  2. php获取微博热搜,爬取微博热搜top50(示例代码)

    一.主题式网络爬虫设计方案(15分) 1.主题式网络爬虫名称:爬取微博热搜top50 2.主题式网络爬虫的内容与数据特征分析:排名 关键词 点击量 3.主题式网络爬虫设计方案概述: 先分析页面 对比源 ...

  3. c#使用正则表达式获取TR中的多个TD_[Python从零到壹] 四.网络爬虫之入门基础及正则表达式抓取博客案例...

    首先祝大家中秋节和国庆节快乐,欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都 ...

  4. 抓取微博热搜榜数据并保存在Excel中

    PC端我们抓包常用到工具是Fiddler,那app端要怎么抓包? 1.首先将jsoup-1.8.1.jar(点击下载).poi-3.7.jar(目前上传不了,可以CSDN资源中去搜索下载)这两个包放到 ...

  5. c#使用正则表达式获取TR中的多个TD_一个 Vue 模板可以有多个根节点(Fragments)?

    如果我们试图创建一个没有根节点的Vue模板,比如这样: <template> 我们就会收到编译或运行时错误,因为模板必须具有单个根元素. 通常,我们通过在最外层包裹一层 div 来解决这个 ...

  6. Python爬虫实例--新浪热搜榜[正则表达式]

    Python爬虫实例--新浪热搜榜[正则表达式] 1.基础环境配置: requests-->版本:2.12.4 re-->:Python自带,无需安装 2.网页分析 很容易从html源码中 ...

  7. Python网络爬虫:爬取CSDN热搜数据 并保存到本地文件中

    hello,大家好,我是wangzirui32,今天我们来学习如何爬取CSDN热搜数据,并保存到Excel表格中. 开始学习吧! 学习目录 1. 数据包抓取 2. 编写代码 1. 数据包抓取 打开CS ...

  8. 爬取图片到mysql数据库_爬取微博图片数据存到Mysql中遇到的各种坑\mysql存储图片\爬取微博图片...

    前言 由于硬件等各种原因需要把大概170多万2t左右的微博图片数据存到Mysql中.之前存微博数据一直用的非关系型数据库mongodb,由于对Mysql的各种不熟悉,踩了无数坑,来来回回改了3天才完成 ...

  9. 爬取微博图片数据存到Mysql中遇到的各种坑\mysql存储图片\爬取微博图片

    本人长期出售超大量微博数据.旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com.同时欢迎加入社交媒体数据交流群:99918768 前言   ...

最新文章

  1. linux系统版本间的区别是什么?内核又是什么
  2. 使用FLANN进行特征点匹配
  3. 深度探讨验证码发展史,账户中心安全科普文
  4. java trrows处理_java 19 -2 异常以及tr...catch()的方法处理异常
  5. 3台机器配置hadoop集群_Hadoop学习之路(三)Hadoop集群搭建和简单应用
  6. python人像精细分割_人像抠图 - 发丝级人像分割 - 照片人物特效 - 极链科技
  7. Linux综合练习——课件分发
  8. linux ntp测试,linux 查看ntp服务器是否可访问
  9. PyTorch 1.0 中文文档:广播语义
  10. React+TS免注册DOM页面dialog弹窗
  11. 朝鲜黑客伪装成三星招聘人员诱骗安全研究员,或发动供应链攻击
  12. c语言兔子序列答案,C语言经典题目——兔子生兔子(示例代码)
  13. pytorch 神经网络构造
  14. 原生js发送ajax请求
  15. pdf editor android,MaxiPDF PDF editor builder
  16. PgMP Program Management Professional All-in-One Exam Guide
  17. DeepMind AI碾压《星际争霸2》人类职业玩家 但它还不完美
  18. 深信服 2022届校园招聘 C++笔试编程题目
  19. Sun Solaris系统管理命令简介
  20. ADC 获取数据(stm32)

热门文章

  1. ziheng -q登录界面
  2. 有道云笔记怎么不开通会员在markdown上使用图片
  3. Framework7中文文档
  4. return false的作用python_Python关键字return的作用
  5. windows系统启动tomcat服务的三种方式
  6. matlab做拉普拉斯曲线,Matlab 拉普拉斯滤波 以及 imfilter 详解(多图)
  7. 全网最细:Jest+Enzyme测试React组件(包含交互、DOM、样式测试)
  8. 2020年“泰迪杯”数据分析职业技能大赛B题疫情数据分析
  9. 求100到999中的水仙花数(两种方法,c语言)
  10. 还要影响到我在同学们心中的飞鸽传书