首页 > 其他分享 >微博指数的数据爬取

微博指数的数据爬取

时间:2022-10-10 12:56:23浏览次数:42  
标签:__ weibo 指数 self json 爬取 微博 print data

总有那么几个网站总是不按照套路出牌。那么微博指数必然是属于其中之一。

1.找到微博指数的网站进入之后,你就会发现界面压根就没有任何的数据。

 

 

 那么在这个界面呢,我们需要打开浏览器的抓包工具,然后切换成手机端才能让其显示数据。

 

 

 点击之后刷新按钮,就可以得到数据

 

 

 然而我们的这个网站是一个异步的加载方式,那么我们该如何知道的呢?

可以在上地的输入框中输入一个关键词,然后在数据保重查找数据,我们可以发现里面没有任何的响应数据。

 

 

 所以,我们要把位置定位到XHR中,你就会发现他这里只有一两个数据包,

 

 

 

点击之后,我们可以在预览 部分清晰的看到我们刚才输入关键字的数据

 

 

 

 

 

那么这里,我们用到的是面向对象式的编程方式。

class Weibospider():
def __init__(self):
self.url = "https://data.weibo.com/index/ajax/newindex/getchartdata"

self.payload = {
'wid': '1091324464527', # 关键词的ID
'dateGroup': '3month',
}
self.headers = {
'Host':'data.weibo.com',
'authority': 'data.weibo.com',
'accept': 'application/json',
'accept-language': 'zh-CN,zh;q=0.9',
'content-type': 'application/x-www-form-urlencoded',
'cookie': 'SINAGLOBAL=8108913659794.359.1655112521493; ULV=1655201947902:1:1:1:4236805201365.277.1655201947897:; SCF=AngLYdv1ECNM1c74i3l1O9Dxw9R7O9k6PvlE-6HQIITeZdBuRE3b-2A9gauZ41DRe8cax1fY0fo0LmsPNBnYaM0.; SUB=_2AkMV9fXydcPxrAZXnvgdxGvmaYtH-jymIJwEAn7uJhMyAxh87n0-qSVutBF-XIovFJYybnGEdsGm7kSTgtdl6urW; SUBP=0033WrSXqPxfM72wWs9jqgMF55529P9D9W5Uf_nkXb9rPHiMgMhNpu5P5JpVF02Re0MXSK.p1hqE; WEB3=a26b5f9819aa17025f1f81fe74bb7a38',
'origin': 'https://data.weibo.com',
'referer': 'https://data.weibo.com/index/newindex?visit_type=trend&wid=1091324464527',
'sec-fetch-dest': 'empty',
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
'x-requested-with': 'XMLHttpRequest'
}

下面就是进行发送请求。

def get_data(self):
r = requests.post(self.url, headers=self.headers, data=self.payload)
# print(r.status_code)
# print(r.json())
return r.json()

解析和保存操作,那么这里是按照需求保存到我们的csv当中,可以根据自己的需求,换成其他的保存方式也可以。

这里需要解释的是,下面的代码中的$是代表层级,..是代表跳过任意层级。后面的x和s则是我们所需要获取的数据。

def parse_data(self, data):
x_time = jsonpath(data, '$..x')[0]
s_data = jsonpath(data, '$..s')[0]
f = open('weibo.csv','w',encoding='gbk',newline='') # gbk收录汉字更广
w = csv.writer(f) # 写入对象
w.writerow(['关键词','日期','时间']) # 按行写入数据
for x, s in zip(x_time, s_data):
print(x, s)
print('=' * 20)
w.writerow(['范冰冰',s,x])
这里呢,是将四个不同的时间板块,放在一个列表当中。达到爬取不同时间板块数据的目的。
  def start(self):
for i in data_list:
self.payload['dateGroup']=i
json_data = self.get_data()
self.parse_data(json_data)

if __name__ == '__main__':
a = input('请输入你要检索的关键词:')
data_list = [
'1hour',
'1day', '1month', '3month'
]
abc = Weibospider()
abc.start()

最后是运行结果

 

 

 

 

 

 

 

 

 

def get_data(self):
r = requests.post(self.url, headers=self.headers, data=self.payload)
# print(r.status_code)
# print(r.json())
return r.json()

标签:__,weibo,指数,self,json,爬取,微博,print,data
From: https://www.cnblogs.com/beilipython/p/16775269.html

相关文章

  • 专属于你的情话(情话网站爬取)
    是否还在跟男朋友或者第女朋友聊天的时候说不出他的专属情话,别急,哥们,这不就来了吗!!1.首先我们需要在度娘的输入框中输入情话网。   这里的对象任你选择。。现在呢,......
  • 使用xpath表达式实现简单的豆瓣电影一周口碑榜数据爬取
    #-*-coding:utf-8-*-"""CreatedonSatOct813:09:042022@author:小徐同学"""#使用xpath豆瓣importrequestsfromlxml.htmlimportfromstringbase_u......
  • 爬取图片信息
    1.图片的加载信息只有两种,(个人认为,目前只遇到过两种)-同步加载-异步加载2.(1)同步加载,在你返回的数据中可以清晰的看到,你所需要的数据全部都在你所打印的respons......
  • scrapy爬取网站图片(静态加载)
    1.创建一个scrapy项目scrapystartgprojecttupiancdtupian创建爬虫文件 scrapygenspiderImagewww.com(域名)后续需要更改         开通pip管......
  • scrapy爬取校花网信息
    校花网的信息资源都可以在我们打印出来的响应对象中找到,所以说,校花网的加载方式是属于静态加载的,所以,我们就可以直接在scrapy框架中的爬虫文件档中将我们所需要的信息全部......
  • 到处裁员,数据分析师还火热吗?爬取了72个城市需求,北京第一
    金九银十求职季已经过半,最近咨询经验的同学也越来越多了,有很多求职、或是转行的同学向我咨询我数据分析师岗位的种种信息。虽然老李我在数据领域待了这么多年,对这个岗位的的......
  • 274 H指数
      1defhIndex(citations):2citations.sort()3n=len(citations)4index=05whileindex<n:6ifn-index<=citations[ind......
  • 【python爬虫】 python 爬取知乎的公开收藏夹
    前言看看如何用python爬取知乎的公开收藏夹内容尝试第一个方法开始的时候用python,request库进行的网页请求,在请求你的收藏夹总界面的时候还可以返回信息,这个ur......
  • 爬取的html页面打印时页面中的中文乱码解决方法
    跳转到爬取的html页面会发现默认编码为utf-8,当编辑器默认编码不是utf-8时会出现中文乱码的情况。解决如下:1.在打印前将response的编码格式改为utf-8如:rsponse.encoding="......
  • python3爬取CSDN个人所有文章列表页
    前言我之前写了下载单篇文章的接口函数,结合这篇写的,就可以下载所有个人的所有文章了代码实现没什么技术含量就是简单的xpath处理,不过有意思的是有一位csdn员工将自己的博客......