0


Python实现微博关键词爬虫

1.背景介绍

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

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

2. 项目实现思路

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

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

3.代码

1.导入相关的包,设置headers参数(cookies参数需要更改成自己浏览器的cookies);

  1. import datetime
  2. from time import sleep
  3. import pandas as pd
  4. import requests
  5. from bs4 import BeautifulSoup
  6. import copyheaders
  7. # 模拟请求头,设置cookie等信息
  8. headers = copyheaders.headers_raw_to_dict(b"""
  9. Cookie:SCF=AryfLlAySr5dtuzHiOK7FmpLA_PYzO6fAyNLqHX07u0nVChBj3WtMAFGmado-IlJWOnJkTquNJuxX8pMuh_x4Wk.;
  10. SUB=_2A25LrZcaDeRhGeBH4lIV-SrLzzqIHXVowpbSrDV8PUNbmtB-LUTWkW9NQbWyO1B36EDQGBy28OXoMRu67OFLhiMO;
  11. SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WWQ9A123FRnzhjZaYxL0RDv5NHD95Qc1K.7Sh.XS0BcWs4Dqcjci--fi-2Xi-24i--RiK.0iKL2i--RiKn4i-zEi--NiKLWiKnXi--4iK.fiKLhi--fi-82iK.7;
  12. ALF=02_1725002826;
  13. WBPSESS=kp-mRCDleWeLlB7ocAtWjgJpLwY-7s0o28OfmKxGr-vVEN9zU_M04E2V7vR8bHNGUkdOr1fGGH2XEMAup-6R2PDUjOcXLxlhRMq6F6VcYF67rgcxegC8hR0n0X1josnpQ9N0k5rdHLY5-sDsM0MxWw==;
  14. XSRF-TOKEN=CWIcgDBSCGTzTuU1RDrnF-lT
  15. 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
  16. """)

2.设置关键词以及爬取时间范围,并将日期转换为标准格式;

  1. # 设置关键词、起始日期和截止日期
  2. keywords = "樊振东"
  3. initial_time = '2024-07-26'
  4. deadline = '2024-08-06'
  5. data = [] # 用于存储爬取到的数据
  6. date_list = []
  7. frequency = 0
  8. # 生成日期列表
  9. new_time = datetime.datetime.strptime(initial_time, "%Y-%m-%d")
  10. date = initial_time
  11. while date <= deadline:
  12. date_list.append(date)
  13. new_time = new_time + datetime.timedelta(1)
  14. date = new_time.strftime("%Y-%m-%d")

3.解析数据并保存;

  1. for page in range(1, int(pages) + 1):
  2. sleep(1) # 防止被封禁,设置爬取间隔
  3. 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}'
  4. new_th = requests.get(url=new_url, headers=headers).text
  5. knapsack = BeautifulSoup(new_th, 'lxml')
  6. data_list = knapsack.find_all('div', class_="card")
  7. no = knapsack.find('div', class_="card card-no-result s-pt20b40")
  8. # 解析每一条微博信息
  9. if no is None:
  10. for i in data_list:
  11. dic = {}
  12. try:
  13. dic['发布者id'] = i.find('div', class_="info").find('a', target="_blank").text
  14. itme = str(i.find('div', class_="from").text).replace('\n', '').replace(' ', '').replace('来自', '').split('\xa0')
  15. dic['发布时间'] = itme[0]
  16. dic['出处'] = itme[1]
  17. dic['转发数'] = str(i.find_all('a', class_="woo-box-flex woo-box-alignCenter woo-box-justifyCenter")[-3].text).replace(' ', '')
  18. dic['点赞数'] = str(i.find_all('span', class_="woo-like-count")[-1].text).replace(' ', '')
  19. dic['评论数'] = str(i.find_all('a', class_="woo-box-flex woo-box-alignCenter woo-box-justifyCenter")[-2].text).replace(' ', '')
  20. txt = str(i.find('p', class_="txt").text).replace('\n', '').replace(' ', '').replace('\u200b', '').replace('收起', '')
  21. dic["内容"] = txt
  22. frequency += 1
  23. data.append(dic)
  24. except Exception as e:
  25. break
  26. # 数据保存到Excel
  27. df = pd.DataFrame(data)
  28. df.to_excel(f'{keywords}.xlsx', index=False)

4.代码说明

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

有问题联系zx_luckfe;


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

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

还没有评论