python爬取 过去的微博热搜(热搜神器)
python爬取热搜神器(可以查找关键字热搜or过去的热搜)
hello,因为老师给了任务,希望我们爬取一些微博上的数据,所以就想到了要爬取热搜,再根据热搜爬取评论。因为微博对过往的热搜不能根据时间进行搜索,因此这里笔者找到了一个微信公众号–热搜神器
点击历史热搜就可以看到之前某一天的热搜。但是好像要用积分兑换,我登录注册了一下用100积分换了七天能查阅的时间,所以就抓紧时间开始写这个博客啦~~
话不多说~我们开始吧
引入库
这里就不做介绍了,主要还是用requests库,还用到了正则表达式,xlwt等,都是比较基础的库
from datetime import datetime,timedelta
import re
import requests
import xlwt
设置headers
这里主要是cookie,和之前爬取微博一样需要登录信息,因为他是会员才能看历史热搜
cookie ='这里自己去找哟'
headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19041',"Cookie":cookie}
获取日期列表
这里其实是我从某个博主那里找的,但是他的不能爬到之前的内容,我相当于是对他的代码改了一下,但是我已经找不到他的博客在哪里了,麻烦作者如果看到了联系我一下~~感谢
def gen_dates(b_date, days):day = timedelta(days=1)for i in range(days):yield b_date + day*i
def get_date_list():#这里自己设置时间~因为我要爬的是今年的热搜所以就start = datetime.strptime("2019-12-31", "%Y-%m-%d").date()#.date()可以只截取日期end = datetime.strptime("2020-11-3", "%Y-%m-%d").date()datelist = []for d in gen_dates(start, (end-start).days):datelist.append(d)return datelist
获取热搜及其网址
因为下面爬取的网页其实是一个json网页,所以格式比较好解析,但是因为我太懒了所以就用了原作者的方式,没有用到json,用的是re去对爬到的数据做了一个处理,保存的东西我们也不太一样,所以做了一个改变。
#获取数据的文字部分(热搜词条)和链接(我只需要这两个)
def GetMiddleStr(final_set,content,time):try:wenzi = re.search('word":".*","url',str(content)).group(0).replace('word":"','').replace('","url','')url = re.search('"url":".*","count"',str(content)).group(0).replace('"url":"','').replace('","count"','')final_set.add((url,wenzi,time))except:return 0
存储到文件中
这个其实跟之前写的没什么区别,只不过是把我之前文章的list换成了set,因为之前爬热搜发现有的时候热搜有可能会重复,为了方便处理所以用了set
def export(result_set,date_str):excel = xlwt.Workbook(encoding="utf-8")sheet = excel.add_sheet("sheet1")sheet.write(0, 0, "网址")sheet.write(0, 1, "热搜")ex = 'D:/weibo/hot_past/'+date_str.replace('/','_')+'.xls'i = 0for t in result_set:sheet.write(i + 1, 0, t[0])sheet.write(i + 1, 1, t[1])i += 1excel.save(ex)
最后的main函数啦(这里有个非常要注意的地方,成败在此一举???)
函数别的地方没什么好说的,先贴代码再分析
def main():final_set = set()url = 'https://www.enlightent.cn/research/top/getWeiboHotSearchDayAggs.do'for i in range(len(get_date_list())):date_str = str(get_date_list()[i].year)+'/'+str(get_date_list()[i].month)+'/'+str(get_date_list()[i].day)print(date_str)data = {'type': 'realTimeHotSearchList','t': '嘤嘤嘤',#我可真厉害'accessToken':'就是这里,看这看这看这!!!!!!','date': date_str}r = requests.post(url, data=data, headers=headers)result = r.content.decode('utf-8')print(result)#获取到的字符串进行分片,此时result由一长串字符串变成列表result = result.split('},{')#去除首部两个字符以便后面的正则匹配result[0] = result[0].strip('[{')for j in range(len(result)):GetMiddleStr(final_set,result[j],date_str)export(final_set,date_str)final_set = set()if __name__ =="__main__":main()
不得不说还是谷歌浏览器比较香,之前用Edge,明明改了cookie但却还是不能爬历史的页面,但是google就可以!!!
注意右边的箭头!!!Edge出不来这个accessToken,所以总是不能成功!!
找了半天原因人都要崩溃了
原来在这里!!!
主要就是这样啦,这样就可以爬取成功了~
最后都把他保存下来就可以做进一步的处理操作了~
python爬取 过去的微博热搜(热搜神器)相关推荐
- python爬取天气与微博热搜自动发给微信好友
python爬取天气与微博热搜自动发给微信好友 前言 系统环境 正文 爬取中国天气网 爬取微博热搜 微信自动发送消息 源代码 总结 github地址 前言 忙着毕设与打游戏之余,突然想着写个爬虫练练手 ...
- Python爬取南京地铁微博发布客流数据并进行分析
Python爬取南京地铁微博发布客流数据并进行分析 之前在网上看到了分析北京地铁客流数据的开源项目,就想试着分析一下南京地铁的客流数据,可是找了很久没有找到可以获得南京地铁客流数据的接口,就去南京地铁 ...
- python网易云听歌时长_用Python爬取10w条网易云音乐热评并进行分析的方法总结
有个段子讲"十年文案老司机,不如网易评论区,网易文豪遍地走,评论全部单身狗",网易云音乐的评论区也一直都是各类文案大神的聚集地. 那么我们普通用户到底如何成为网易云音乐评论里的热评 ...
- Python 爬取“工商秘密”微博后,我做了这个“可视化大屏”(附gif图)
公众号后台回复"图书",了解更多号主新书内容 作者:卖山楂啦prss 来源:数据分析与统计学之美 前言 微博作为我的日常软件之一,平时除了看看热搜.肖战(哈哈),我还会时不时看看秘 ...
- python爬取某人所有微博_Python爬取博客的所有文章并存为带目录的word文档(实例67)
看上博客上一个作者的文章,想一次性下载到一个word文件中,并且可以设置好目录,通过word的"导航窗格"快速定位单篇文章.一劳永逸,从此再也不用去博客上一篇一篇地翻阅了.整理一下 ...
- python爬取客流数据_Python爬取南京地铁微博发布客流数据并进行分析
Python爬取南京地铁微博发布客流数据并进行分析 之前在网上看到了分析北京地铁客流数据的开源项目,就想试着分析一下南京地铁的客流数据,可是找了很久没有找到可以获得南京地铁客流数据的接口,就去南京地铁 ...
- 简单python爬取微博并写入excel
写了一个简单的Python爬取指定用户微博的内容和图片,目前比较简陋,之前有在github上参考别人写的爬虫,发现现在微博好像使用的是Ajax的方式来渲染数据,这也太方便了,直接请求接口,然后解析 ...
- python爬取微博热搜榜
python爬取微博热搜榜 最近应我大学室友得需求,做了一个简单的爬虫案例,先给大家看一下程序运行效果 接下来就是贴出代码了,在这里我会做一些简单说明,对如刚入门的同学可能会有所帮助,这里使用的是py ...
- python爬取微博热搜数据并保存!
主要用到requests和bf4两个库将获得的信息保存在d://hotsearch.txt下importrequests;importbs4mylist=[]r=requests.get(ur- 很多 ...
最新文章
- PHP:第一章——PHP中的魔术常量
- access 打印预览 代码_PDFFactory pro虚拟打印机下载-PDFFactory官方版下载
- 【Java代码】未分页数据根据参数进行分页(粘贴可用)
- BZOJ-2298|区间dp|线段树
- SAP Spartacus organization unit里org list的focus实现问题
- cURL模拟POST方式提交数据
- gcc编译出现:error: dereferencing pointer to incomplete type
- java decompiler 3.11_Java反编译软件(DJ Java Decompiler)下载 v3.11.11.95官方版-第五资源...
- 深入解析oracle电子版,深入解析Oracle数据库
- 第188篇,想赚钱唯有只争朝夕(扶摇生财思维)
- Java实现对png图片文件电子签名操作
- Python 之 格式化输出
- 计算机软考落户广州,想要在2020年入户广州,考这个证就够了!
- watershed分水岭详解
- 这就是爱,说也说不清楚
- Budgie Desktop v8 发布,改进菜单和面板
- 人到中年再苦再难,也不要做这3种工作,余生漫长,越老越吃苦
- 收银软件超市通:如何把负库存清0,有库存的保持不变?
- 如何运用matlab给球面染上颜色,matlab画球体颜色如何选择
- 小游戏 搭建 投篮 --项目
热门文章
- 计算机cpu 2.5ghz,电脑CPU 2.5GHZ指的是主频的速度吗,肿么判断CPU的好坏
- ThreadLocal 简单了解
- 英语日常短语积累(4)—银行考试真题
- 语义分析- C-- 语言
- 十六、基于FPGA的CRC校验设计实现
- 卷积神经网络初步(零):从原始汤到细胞
- QQ音乐做直播:与秀场无关,对数字音乐产业有何影响?
- 手写webserver服务器
- 幼儿园监控_透明装饰_安全工地_放心食堂_多媒体教室基于视频流媒体能力解决方案
- 怎么写小说?做好这4步,你也能开始写小说 | Effie经验分享