做网站一般费用多少,微信朋友圈怎么投放广告,自己怎么在电脑上做网站,做电影网站多少带宽1.背景介绍
随着社交媒体的广泛应用#xff0c;微博上的海量数据成为了很多研究和分析的重要信息源。为了方便获取微博的相关内容#xff0c;本文将介绍如何使用Python编写一个简单的爬虫脚本#xff0c;从微博中抓取指定关键词的相关数据#xff0c;并将这些数据保存为Ex…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:SCFAryfLlAySr5dtuzHiOK7FmpLA_PYzO6fAyNLqHX07u0nVChBj3WtMAFGmado-IlJWOnJkTquNJuxX8pMuh_x4Wk.;
SUB_2A25LrZcaDeRhGeBH4lIV-SrLzzqIHXVowpbSrDV8PUNbmtB-LUTWkW9NQbWyO1B36EDQGBy28OXoMRu67OFLhiMO;
SUBP0033WrSXqPxfM725Ws9jqgMF55529P9D9WWQ9A123FRnzhjZaYxL0RDv5NHD95Qc1K.7Sh.XS0BcWs4Dqcjci--fi-2Xi-24i--RiK.0iKL2i--RiKn4i-zEi--NiKLWiKnXi--4iK.fiKLhi--fi-82iK.7;
ALF02_1725002826;
WBPSESSkp-mRCDleWeLlB7ocAtWjgJpLwY-7s0o28OfmKxGr-vVEN9zU_M04E2V7vR8bHNGUkdOr1fGGH2XEMAup-6R2PDUjOcXLxlhRMq6F6VcYF67rgcxegC8hR0n0X1josnpQ9N0k5rdHLY5-sDsM0MxWw;
XSRF-TOKENCWIcgDBSCGTzTuU1RDrnF-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-06data [] # 用于存储爬取到的数据
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 fhttps://s.weibo.com/weibo?q{keywords}typeall1suball1timescopecustom%3A{time}-0%3A{time}-23Refergpage{page}new_th requests.get(urlnew_url, headersheaders).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, indexFalse)4.代码说明
大家给以根据自己的需求更改代码
有问题联系zx_luckfe;