请使用Python爬取微博数据,以评论、点赞、转发、粉丝、时间、状态、正文等作为数据特征。
时间: 2023-12-28 10:16:40 浏览: 78
新浪微博用户数据爬取(Python实现)
好的,首先需要准备以下工具和库:
- Python 3.x
- requests 库
- BeautifulSoup 库
- Chrome浏览器
- Chrome浏览器驱动(根据自己的Chrome浏览器版本选择下载)
接下来,我们按照以下步骤进行微博数据爬取:
1. 打开Chrome浏览器,登录微博账号,并打开需要爬取数据的微博页面。
2. 按F12打开开发者工具,选择“Network”选项卡,并刷新页面。我们可以看到页面请求的网络请求。
3. 找到名为“XHR”的网络请求,点击它,并在“Headers”选项卡中找到“Request Headers”中的“cookie”一项。复制该项的值,作为后面爬取微博数据的Cookie。
4. 在“Headers”选项卡中找到“Query String Parameters”一项,其中包含了许多参数,我们需要记录下其中的“containerid”和“page”参数。其中,containerid代表要爬取的微博页面的containerid,而page代表要爬取的页数。
5. 使用requests和BeautifulSoup库进行数据爬取。代码如下:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://m.weibo.cn/api/container/getIndex?containerid=XXX&page=YYY'
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',
'Cookie': 'XXX' # 将XXX替换为刚刚获取到的Cookie
}
response = requests.get(url, headers=headers)
json_data = response.json()
cards = json_data['data']['cards']
for card in cards:
if card['card_type'] == 9:
mblog = card['mblog']
created_at = mblog['created_at']
text = mblog['text']
reposts_count = mblog['reposts_count']
comments_count = mblog['comments_count']
attitudes_count = mblog['attitudes_count']
user = mblog['user']
screen_name = user['screen_name']
followers_count = user['followers_count']
verified = user['verified']
print(created_at, text, reposts_count, comments_count, attitudes_count, screen_name, followers_count, verified)
```
在上面的代码中,我们使用requests库发送网络请求,并将响应数据转换为JSON格式。然后,我们遍历所有的微博卡片,并找到其中的“card_type”为9的卡片,即微博卡片。我们提取出其中的评论、点赞、转发、粉丝、时间、状态、正文等数据特征,并打印输出。
需要注意的是,这里只爬取了一页的数据。如果需要爬取多页数据,只需要将上面代码中的page参数改为需要爬取的页数即可。
阅读全文