用python爬微博数据_怎样用python爬新浪微博大V所有数据?

最近为了做事件分析写了一些微博的爬虫,两个大V总共爬了超70W的微博数据。

官方提供的api有爬取数量上限2000,想爬取的数据大了就不够用了...

果断撸起袖子自己动手!先简单说一下我的思路:

一、目标选择

在确定爬取对象时,在移动端展示的数据可以满足的情况下,优先选择移动端。难度要低很多。

二、分析目标网站

在开始构造爬虫前,需要先了解目标网站的结构和数据传输方式。

拿本次爬取对象举例:

在开发者模式下可以找到构造页面内容的包,Request URL是页面数据api接口,滚动加载几页后即可发现规律。

在此 page = 2控制了滚动的页码数,可通过构造页面链接爬取微博大V所有的微博数据。

Content-Type:application/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 requests #导入requests库

import json #导入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返回的数据,所有的微博内容都放在字典data下的['cards']中,按层级关系取出来就可以了。

每一页会返回10条微博内容,在每一页的['cards']中将其依次取出:

for i in range(0,10):

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

其他数据按照上面讲述的方式依次取就可以了,这里就不赘述了。

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

如果想要爬取每一条微博下的所有评论内容,则需要先将评论链接构造出来,然后依次请求这些链接,后面的思路跟爬取微博内容类似。

本次爬取的数据分析结论首发在我的公众号:产品汪生存指南

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

欢迎关注,一起学习一起成长。

好的,我可以帮你解决这个问题。你可以使用 Python 的第三方 `requests` 和 `beautifulsoup4` 来微博某个话题的内容数据。 首先,你需要了解微博的 URL 格式。以微博话题“Python爬虫”为例,其 URL 为:https://s.weibo.com/weibo?q=%23Python%E7%88%AC%E8%99%AB%23&Refer=top。其中,“%23”是“#”的 URL 编码,“q=”后面跟的是话题的关键词。 接下来,你可以使用 `requests` 向该 URL 发送 GET 请求,并将响应结果的 HTML 代码解析为 `beautifulsoup4` 对象。例如: ```python import requests from bs4 import BeautifulSoup url = 'https://s.weibo.com/weibo?q=%23Python%E7%88%AC%E8%99%AB%23&Refer=top' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') ``` 然后,你可以使用 `beautifulsoup4` 的查找方法来提取微博内容数据。例如,你可以使用 `find_all` 方法找到所有的微博 div 元素,再从中提取微博的文本内容和发布时间。具体代码如下: ```python weibo_list = soup.find_all('div', class_='content') # 找到所有微博 div 元素 for weibo in weibo_list: text = weibo.find('p', class_='txt').get_text() # 提取微博文本内容 time = weibo.find('p', class_='from').find('a').get_text() # 提取微博发布时间 print(text, time) ``` 以上就是微博话题“Python爬虫”内容数据的基本步骤。当然,实际应用中还需要注意反爬虫策略、数据清洗和存储等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值