c#使用正则表达式获取TR中的多个TD_使用python+BeautifulSoup爬取微博热搜榜
本文将介绍基于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爬取微博热搜榜相关推荐
- 爬虫实例:正则表达式爬取微博热搜榜
最近在学习python的爬虫知识,分享一个爬取微博热搜的实例,代码很简单. 用到了requests,re,xlwt库 直接看图: #1导入模块 import requests import re im ...
- php获取微博热搜,爬取微博热搜top50(示例代码)
一.主题式网络爬虫设计方案(15分) 1.主题式网络爬虫名称:爬取微博热搜top50 2.主题式网络爬虫的内容与数据特征分析:排名 关键词 点击量 3.主题式网络爬虫设计方案概述: 先分析页面 对比源 ...
- c#使用正则表达式获取TR中的多个TD_[Python从零到壹] 四.网络爬虫之入门基础及正则表达式抓取博客案例...
首先祝大家中秋节和国庆节快乐,欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都 ...
- 抓取微博热搜榜数据并保存在Excel中
PC端我们抓包常用到工具是Fiddler,那app端要怎么抓包? 1.首先将jsoup-1.8.1.jar(点击下载).poi-3.7.jar(目前上传不了,可以CSDN资源中去搜索下载)这两个包放到 ...
- c#使用正则表达式获取TR中的多个TD_一个 Vue 模板可以有多个根节点(Fragments)?
如果我们试图创建一个没有根节点的Vue模板,比如这样: <template> 我们就会收到编译或运行时错误,因为模板必须具有单个根元素. 通常,我们通过在最外层包裹一层 div 来解决这个 ...
- Python爬虫实例--新浪热搜榜[正则表达式]
Python爬虫实例--新浪热搜榜[正则表达式] 1.基础环境配置: requests-->版本:2.12.4 re-->:Python自带,无需安装 2.网页分析 很容易从html源码中 ...
- Python网络爬虫:爬取CSDN热搜数据 并保存到本地文件中
hello,大家好,我是wangzirui32,今天我们来学习如何爬取CSDN热搜数据,并保存到Excel表格中. 开始学习吧! 学习目录 1. 数据包抓取 2. 编写代码 1. 数据包抓取 打开CS ...
- 爬取图片到mysql数据库_爬取微博图片数据存到Mysql中遇到的各种坑\mysql存储图片\爬取微博图片...
前言 由于硬件等各种原因需要把大概170多万2t左右的微博图片数据存到Mysql中.之前存微博数据一直用的非关系型数据库mongodb,由于对Mysql的各种不熟悉,踩了无数坑,来来回回改了3天才完成 ...
- 爬取微博图片数据存到Mysql中遇到的各种坑\mysql存储图片\爬取微博图片
本人长期出售超大量微博数据.旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com.同时欢迎加入社交媒体数据交流群:99918768 前言 ...
最新文章
- linux系统版本间的区别是什么?内核又是什么
- 使用FLANN进行特征点匹配
- 深度探讨验证码发展史,账户中心安全科普文
- java trrows处理_java 19 -2 异常以及tr...catch()的方法处理异常
- 3台机器配置hadoop集群_Hadoop学习之路(三)Hadoop集群搭建和简单应用
- python人像精细分割_人像抠图 - 发丝级人像分割 - 照片人物特效 - 极链科技
- Linux综合练习——课件分发
- linux ntp测试,linux 查看ntp服务器是否可访问
- PyTorch 1.0 中文文档:广播语义
- React+TS免注册DOM页面dialog弹窗
- 朝鲜黑客伪装成三星招聘人员诱骗安全研究员,或发动供应链攻击
- c语言兔子序列答案,C语言经典题目——兔子生兔子(示例代码)
- pytorch 神经网络构造
- 原生js发送ajax请求
- pdf editor android,MaxiPDF PDF editor builder
- PgMP Program Management Professional All-in-One Exam Guide
- DeepMind AI碾压《星际争霸2》人类职业玩家 但它还不完美
- 深信服 2022届校园招聘 C++笔试编程题目
- Sun Solaris系统管理命令简介
- ADC 获取数据(stm32)
热门文章
- ziheng -q登录界面
- 有道云笔记怎么不开通会员在markdown上使用图片
- Framework7中文文档
- return false的作用python_Python关键字return的作用
- windows系统启动tomcat服务的三种方式
- matlab做拉普拉斯曲线,Matlab 拉普拉斯滤波 以及 imfilter 详解(多图)
- 全网最细:Jest+Enzyme测试React组件(包含交互、DOM、样式测试)
- 2020年“泰迪杯”数据分析职业技能大赛B题疫情数据分析
- 求100到999中的水仙花数(两种方法,c语言)
- 还要影响到我在同学们心中的飞鸽传书