Python爬取微博(APP)榜单爬虫及数据可视化
import requests
import json
import pandas as pd
# 微博App榜单API
def get_weibo_ranking(ranking_type, start_index=0, end_index=20):
url = 'https://m.weibo.cn/api/container/getIndex?containerid=107603{}&page={}'
ranking_data = []
for page in range((end_index - start_index) // 10 + 1):
response = requests.get(url.format(ranking_type, page))
data = json.loads(response.text[18:-1])
ranking_data.extend(data['data']['cards'])
return ranking_data
# 获取微博用户信息
def get_user_info(user_ids):
user_info = {}
for id in user_ids:
url = f'https://m.weibo.cn/api/container/getIndex?containerid=230410{id}'
response = requests.get(url)
data = json.loads(response.text[18:-1])
user_info[id] = data['data']['cards'][0]['user']['screen_name']
return user_info
# 保存数据到CSV文件
def save_to_csv(data, filename):
df = pd.DataFrame(data)
df.to_csv(filename, index=False)
# 示例使用
if __name__ == '__main__':
# 获取原创榜单用户ID列表
original_ranking = get_weibo_ranking(107603380, 0, 20)
user_ids = [card['user']['id'] for card in original_ranking]
# 获取用户昵称
user_nicknames = get_user_info(user_ids)
# 整理数据
ranking_data = [
{
'ranking': index + 1,
'user_id': user_id,
'nickname': user_nicknames.get(user_id),
'weibo_num': card['mblog_num'],
'follows_num': card['follows_num'],
'fans_num': card['fans_num'],
}
for index, (user_id, card) in enumerate(zip(user_ids, original_ranking))
]
# 保存数据到CSV文件
save_to_csv(ranking_data, 'weibo_original_ranking.csv')
这段代码提供了一个简化版本的微博原创榜单爬取方法,并演示了如何使用Python进行简单的数据爬取和保存。虽然这个例子没有包含完整的爬虫教程,但它展示了如何使用Python进行数据爬取和处理,这对于学习爬虫技术的开发者来说是一个很好的起点。
评论已关闭