欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Python实现微博关键词爬虫

Python实现微博关键词爬虫

2025/2/22 2:15:24 来源:https://blog.csdn.net/ekskef_sef/article/details/145644457  浏览:    关键词:Python实现微博关键词爬虫

1.背景介绍

随着社交媒体的广泛应用,微博上的海量数据成为了很多研究和分析的重要信息源。为了方便获取微博的相关内容,本文将介绍如何使用Python编写一个简单的爬虫脚本,从微博中抓取指定关键词的相关数据,并将这些数据保存为Excel文件。本文将以关键词“樊振东”为例,展示从微博抓取该关键词相关数据的全过程。

废话不多说,先上结果图。

2. 项目实现思路

该爬虫通过向微博的搜索接口发送HTTP请求,获取与指定关键词相关的微博数据,并使用BeautifulSoup进行网页解析,将解析后的数据存储到Pandas DataFrame中,最后保存为Excel文件。整个项目分为以下几个步骤:

  • 设置请求头信息和cookie,模拟浏览器访问;
  • 根据指定日期范围抓取每天的微博内容;
  • 解析网页,提取发布者、内容、转发数、评论数、点赞数等信息;
  • 将数据存储为Excel文件(可根据自己的需求更换保存格式)

3.代码

1.导入相关的包,设置headers参数(cookies参数需要更改成自己浏览器的cookies);
import datetime
from time import sleep
import pandas as pd
import requests
from bs4 import BeautifulSoup
import copyheaders# 模拟请求头,设置cookie等信息
headers = copyheaders.headers_raw_to_dict(b"""
Cookie:SCF=AryfLlAySr5dtuzHiOK7FmpLA_PYzO6fAyNLqHX07u0nVChBj3WtMAFGmado-IlJWOnJkTquNJuxX8pMuh_x4Wk.;
SUB=_2A25LrZcaDeRhGeBH4lIV-SrLzzqIHXVowpbSrDV8PUNbmtB-LUTWkW9NQbWyO1B36EDQGBy28OXoMRu67OFLhiMO;
SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WWQ9A123FRnzhjZaYxL0RDv5NHD95Qc1K.7Sh.XS0BcWs4Dqcjci--fi-2Xi-24i--RiK.0iKL2i--RiKn4i-zEi--NiKLWiKnXi--4iK.fiKLhi--fi-82iK.7;
ALF=02_1725002826;
WBPSESS=kp-mRCDleWeLlB7ocAtWjgJpLwY-7s0o28OfmKxGr-vVEN9zU_M04E2V7vR8bHNGUkdOr1fGGH2XEMAup-6R2PDUjOcXLxlhRMq6F6VcYF67rgcxegC8hR0n0X1josnpQ9N0k5rdHLY5-sDsM0MxWw==;
XSRF-TOKEN=CWIcgDBSCGTzTuU1RDrnF-lT
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0
""")
2.设置关键词以及爬取时间范围,并将日期转换为标准格式;
# 设置关键词、起始日期和截止日期
keywords = "樊振东"
initial_time = '2024-07-26'
deadline = '2024-08-06'data = []  # 用于存储爬取到的数据
date_list = []
frequency = 0# 生成日期列表
new_time = datetime.datetime.strptime(initial_time, "%Y-%m-%d")
date = initial_time
while date <= deadline:date_list.append(date)new_time = new_time + datetime.timedelta(1)date = new_time.strftime("%Y-%m-%d")
3.解析数据并保存;
    for page in range(1, int(pages) + 1):sleep(1)  # 防止被封禁,设置爬取间隔new_url = f'https://s.weibo.com/weibo?q={keywords}&typeall=1&suball=1&timescope=custom%3A{time}-0%3A{time}-23&Refer=g&page={page}'new_th = requests.get(url=new_url, headers=headers).textknapsack = BeautifulSoup(new_th, 'lxml')data_list = knapsack.find_all('div', class_="card")no = knapsack.find('div', class_="card card-no-result s-pt20b40")# 解析每一条微博信息if no is None:for i in data_list:dic = {}try:dic['发布者id'] = i.find('div', class_="info").find('a', target="_blank").textitme = str(i.find('div', class_="from").text).replace('
', '').replace(' ', '').replace('来自', '').split('?')dic['发布时间'] = itme[0]dic['出处'] = itme[1]dic['转发数'] = str(i.find_all('a', class_="woo-box-flex woo-box-alignCenter woo-box-justifyCenter")[-3].text).replace(' ', '')dic['点赞数'] = str(i.find_all('span', class_="woo-like-count")[-1].text).replace(' ', '')dic['评论数'] = str(i.find_all('a', class_="woo-box-flex woo-box-alignCenter woo-box-justifyCenter")[-2].text).replace(' ', '')txt = str(i.find('p', class_="txt").text).replace('
', '').replace(' ', '').replace('?', '').replace('收起', '')dic["内容"] = txtfrequency += 1data.append(dic)except Exception as e:break# 数据保存到Excel
df = pd.DataFrame(data)
df.to_excel(f'{keywords}.xlsx', index=False)

4.代码说明

大家给以根据自己的需求更改代码;

有问题联系zx_luckfe;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词