网站调用新浪微博内容(两个大V爬了超70W的微博数据(组图))

优采云 发布时间: 2022-03-01 16:06

  网站调用新浪微博内容(两个大V爬了超70W的微博数据(组图))

  最近写了一些微博爬虫,用于事件分析。两大V一共爬取了超过70W的微博数据。

  官方API的爬取数上限为2000。你要爬的数据太大,不够用……

  卷起袖子,自己动手吧!让我简单解释一下我的想法:

  一、目标选择

  在确定爬取对象时,如果可以满足移动终端显示的数据,则优先选择移动终端。难度要低很多。

  二、分析目标网站

  在开始构建爬虫之前,需要了解目标的结构网站以及数据是如何传输的。

  以这个爬取对象为例:

  在开发者模式下,你可以找到构建页面内容的包。 Request URL是页面数据api接口。滚动并加载几页后,您可以找到该模式。

  这里 page = 2 控制要滚动的页数。通过构建页面链接,可以抓取微博大V的所有微博数据。

  内容类型:应用程序/json; charset=utf-8 表示通过json返回页面数据,编码类型为utf-8。

  然后分析json包,里面收录很多数据集,找到你需要的即可:

  id是构建某条微博评论链接的关键数据。如果要爬取特定微博下的评论数据,需要使用id值来构造评论页链接。正常感知数据:可直接获取微博内容、评论数、点赞数、分享数、发布时间和来源。

  页面分析差不多完成了,可以开始构建微博爬虫了。

  三、模拟浏览器请求

  正常抓取微博时,需要先登录。在这里您可以使用 post 请求来传递帐户和密码。也可以在浏览器登录后直接使用登录的api链接构造请求头,然后使用get方法进行请求。

  这次是以第二种方式实现的。模拟请求头时,只需构造'User-Agent'和'Referer'两组信息即可。

  header=({'User-Agent': '在浏览器的开发模式下获取此信息',

  'Referer': '在浏览器的开发模式下获取此信息',

  })

  这两组信息都可以在此页面的开发者模式下获得:

  (个人信息我已经画好了……)

  构造请求头后,使用requests库模拟请求,请求成功网站服务器识别模拟浏览器请求,返回网站的json数据,然后解析通过python json库。

  目前的代码是:

  # * coding:utf-8 * #声明程序的书写字符

  导入请求 #import 请求库

  import json #import json 库

  def get_data(url):

  for a in range (0,560): #通过不断传入参数a来构造链接页码

  url = '上面得到的页面链接'+str(a)

  header=({'User-Agent': '在浏览器的开发模式下获取此信息',

  'Referer': '在浏览器的开发模式下获取此信息'})

  data = requests.get(url,headers=header,timeout=10) #通过requests的get方法请求

  data = json.loads(data.text) #解析json数据

  四、数据清洗

  拿到json数据后,需要对数据进行清洗,过滤掉想要的字段信息。

  再次分析json返回的数据,所有微博内容都放在字典数据下的['cards']中,根据层级关系取出即可。

  每个页面会返回10条微博内容,从每个页面的['cards']中依次取出:

  对于范围内的 i(0,10):

  text = data['data']['cards'][i]['mblog']['text'].strip() #抓取每个页面的所有微博内容

  其他数据可按上述方法依次获取,此处不再赘述。

  将爬取的数据写入数据库:

  如果要爬取每条微博下的所有评论内容,需要先构建评论链接,然后依次请求这些链接。背后的思路类似于爬取微博内容。

  刚起步,急需各种呵护~! o(* ̄▽ ̄*)ブ~~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线