本软件工具仅限于学术交流使用,严格遵循相关法律法规,符合平台内容合法合规性,禁止用于任何商业用途!
一、背景分析
1.1 开发背景
微博是国内非常流行的社交媒体平台,内容主要以文字和图片为主,在实时性和KOL关注热度方面尤为突出。广大网友在微博平台大量输出自己的观点、看法,组成了一个活跃度极高的社区群体。同时,我本人也发现,每次热点事件爆发的时候,微博热搜也是所有媒体平台里最先曝光的平台(其他平台或多或少都有一些延迟)
基于此,我用python开发了一个爬虫采集软件,叫【爬微博搜索软件】,下面详细介绍。
1.2 软件界面
软件界面,如下:
1.3 结果展示
爬取结果:(截图中展示的就是全部字段了)
1.4 演示视频
软件运行演示:原文有。
1.5 软件说明
几点重要说明,请详读了解:
- Windows用户可直接双击打开使用,无需Python运行环境,非常方便!
- 软件通过爬虫程序爬取,经本人专门测试,运行持久,稳定性较高!
- 先在cookie.txt中填入自己的cookie值,方便重复使用(内附cookie获取方法)
- 支持多个关键词串行爬取
- 支持按时间段范围采集贴子
- 爬取过程中,每爬一页,存一次csv。并非爬完最后一次性保存!防止因异常中断导致丢失前面的数据(每条间隔1~2s)
- 爬取过程中,有log文件详细记录运行过程,方便回溯
- 结果csv含11个字段,有:关键词,页码,微博id,微博链接,用户昵称,用户主页链接,发布时间,转发数,评论数,点赞数,微博内容。
以上是现有功能,软件版本持续更新中。
二、主要技术
软件全部模块采用python语言开发,主要分工如下:
tkinter:GUI软件界面
requests:爬虫请求
BeautifulSoup:解析响应数据
pandas:保存csv结果、数据清洗
logging:日志记录
出于版权考虑,暂不公开源码,仅向用户提供软件使用。
三、功能介绍
3.0 填写cookie
开始采集前,先把自己的cookie值填入cookie.txt文件。
pc端微博cookie获取说明:
然后把复制的cookie值填写到当前文件夹的cookie.txt文件中。
3.1 软件登录
用户登录界面:
3.2 采集微博帖子
根据自己的实际情况,在软件界面填写采集条件,点击开始按钮:
完成采集后,在当前文件夹生成对应的csv文件,文件名以时间戳命名,方便查找。
四、重要技术栈
软件全部模块采用python语言开发,主要分工如下:
tkinter:GUI软件界面
requests:爬虫请求
BeautifulSoup:解析响应数据
pandas:保存csv结果、数据清洗
logging:日志记录
软件界面核心源码实现:
# 创建主窗口
root = tk.Tk()
root.title('微博搜索采集软件v1.3')
# 设置窗口大小
root.minsize(width=900, height=650)
日志记录核心源码实现:
def get_logger(self):
self.logger = logging.getLogger(__name__)
# 日志格式
formatter = '[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s'
# 日志级别
self.logger.setLevel(logging.DEBUG)
# 控制台日志
sh = logging.StreamHandler()
log_formatter = logging.Formatter(formatter, datefmt='%Y-%m-%d %H:%M:%S')
# info日志文件名
info_file_name = time.strftime("%Y-%m-%d") + '.log'
# 将其保存到特定目录
case_dir = r'./logs/'
info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,
when='MIDNIGHT',
interval=1,
backupCount=7,
encoding='utf-8')
self.logger.addHandler(sh)
sh.setFormatter(log_formatter)
self.logger.addHandler(info_handler)
info_handler.setFormatter(log_formatter)
return self.logger
爬虫部分核心源码实现:
发送请求模块:
# 发送请求
r = requests.get(url, headers=h1, params=params)
# 解析数据
soup = BS(r.text, 'html.parser')
保存数据模块:
# 保存数据
df = pd.DataFrame(
{
'关键词': kw,
'页码': page,
'微博id': id_list,
'微博链接': wb_url_list,
'用户昵称': name_list,
'用户主页链接': user_link_list,
'发布时间': create_time_list,
'转发数': repost_count_list,
'评论数': comment_count_list,
'点赞数': like_count_list,
'微博内容': text_list,
}
)
# 数据保存到csv文件
df.to_csv(self.result_file, mode='a+', index=False, header=header, encoding='utf_8_sig')
出于版权考虑,暂不公开完整源码,仅向用户提供软件使用。
五、原创声明
软件【爬微博搜索软件】首发于众公号"老男孩的平凡之路",欢迎交流!!
我是 @马哥python说 ,一名10年程序猿,持续分享python干货.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。