0


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).text
        knapsack = 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").text
                    itme = str(i.find('div', class_="from").text).replace('\n', '').replace(' ', '').replace('来自', '').split('\xa0')
                    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('\n', '').replace(' ', '').replace('\u200b', '').replace('收起', '')
                    dic["内容"] = txt
                    frequency += 1
                    data.append(dic)
                except Exception as e:
                    break

# 数据保存到Excel
df = pd.DataFrame(data)
df.to_excel(f'{keywords}.xlsx', index=False)

4.代码说明

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

有问题联系zx_luckfe;


本文转载自: https://blog.csdn.net/weixin_74305707/article/details/142874990
版权归原作者 才华是浅浅的耐心 所有, 如有侵权,请联系我们删除。

“Python实现微博关键词爬虫”的评论:

还没有评论