【爬虫实战】用python爬取微博任意关键词搜索结果、exe文件

news2024/11/25 23:03:27

项目功能简介:

1.交互式配置;

2.两种任意关键词来源(直接输入、本地关键词文件);

3.自动翻页(无限爬取);

4.指定最大翻页页码;

5.数据保存到csv文件;

6.程序支持打包成exe文件;

7.项目操作说明文档;

一.最终效果


视频演示:

用python爬取微博关键词搜索结果、exe文件视频演示

二.项目代码

2.1 数据来源分析

使用chrome浏览器,F12打开调试面板,使用元素选择工具确定元素位置,如下图

确定页面元素:

说明:为何不直接调用接口获取数据呢? 通过调试面板会发现,搜索结果数据不是前后端分离方式返回到web端,而是通过服务端渲染之后一起发送到web端,所以只能对html解析,获取到关键字段内容。

2.2 解析数据

解析html需要使用bs4库,使用前请确保已经安装成功: pip install bs4,查看本地是否已经安装: pip list,如下图:


from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

elements = soup.select('#pl_feedlist_index .card-wrap')


高能总结:1. soup.select选择器返回的对象还能继续选择元素,例如上面的elements,elements.select_one('.card .info #title');2. 元素如果使用了class对应选择器中用.,id用#,元素标签直接用标签名称,例如divspanul等等。

三.批量保存数据

数据保存使用pandas,因此需要先安装: pip install pandas,解析道的数据单行保存读写文件太费时间,使用pandas批量保存,用法如下:

import pandas as pd
list = [
  {
  "keywords":"",
  ...
  "like":"",
  },{
  "keywords":"",
  ...
  "like":"",
  }
]
df = pd.DataFrame(list)
df.to_csv('result.csv', index=False, columns=["keywords", "nickname", "publish_time", "device_info", "weibo_content", "forward", "comment", "like"])

高能总结:1. df.to_csv保存数据时,如果不存在result.csv文件会自动创建;2.往已经存在数据的result.csv文件中追加数据,使用追加方式:df.to_csv('result.csv', index=False, mode='a', header=False)

pandas保存检查完整代码:


import pandas as pd
import os


class DataTool:
    def __init__(self):
        self.file_path = 'result.csv'

    def check_data(self):
        if os.path.exists(self.file_path):
            with open(self.file_path, 'r') as file:
                first_line = file.readline()
                if first_line.strip():
                    return True
                else:
                    return False
        else:
            return False

    def data_to_save(self, list, page):
        df = pd.DataFrame(list)
        print("数据保存中...")
        if page == 1:
            has_file = self.check_data()
            if not has_file:
                df.to_csv(self.file_path, index=False, columns=["keywords", "nickname", "publish_time", "device_info", "weibo_content", "forward", "comment", "like"])
                return
        df.to_csv(self.file_path, index=False, mode='a', header=False)

下面是pandas库的优点总结:

Pandas 是一个强大的数据处理和分析库,它在数据科学和数据分析领域非常受欢迎。以下是一些 Pandas 库的主要优点:

1.数据结构:Pandas 提供了两个主要的数据结构,DataFrame 和 Series,它们使数据的处理和分析变得更加容易。DataFrame 是一个二维表格,类似于关系型数据库表,而 Series 是一个一维数组,类似于列表或数组。这两种数据结构使得处理不同类型的数据变得更加方便。

2.数据清洗:Pandas 提供了丰富的数据清洗工具,包括处理缺失值、重复值、异常值等的功能。你可以轻松地对数据进行清洗、填充缺失值、删除重复行等操作。

3.灵活的数据操作:Pandas 允许你进行各种灵活的数据操作,包括筛选、过滤、排序、合并、重塑和透视表等。这使得数据分析更加容易,你可以按照需要对数据进行各种操作,而不需要编写复杂的循环和逻辑。

4.数据分组和聚合:Pandas 提供了强大的分组和聚合功能,允许你根据一个或多个列对数据进行分组,并应用聚合函数(如求和、平均值、计数等)来汇总数据。这对于生成统计信息和汇总报告非常有用。

5.时间序列处理:Pandas 支持时间序列数据的处理和分析,包括日期和时间的解析、重采样、滚动窗口计算等。这对于金融分析、天气数据、股票市场分析等领域非常有用。

6.丰富的数据输入/输出:Pandas 支持多种数据格式的读写,包括 CSV、Excel、SQL 数据库、JSON、HTML、Parquet 等,使得数据的导入和导出非常方便。

7.集成性:Pandas 可以与其他数据科学库(如 NumPy、Matplotlib、Scikit-Learn)无缝集成,使得数据分析和建模工作更加流畅。

四.运行过程

五.项目说明文档

六.获取完整源码

爱学习的小伙伴,本次案例的完整源码,已上传微信公众号“一个努力奔跑的snail”,后台回复 微博关键词 即可获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go类型嵌入介绍和使用类型嵌入模拟实现“继承”

Go类型嵌入介绍和使用类型嵌入模拟实现“继承” 文章目录 Go类型嵌入介绍和使用类型嵌入模拟实现“继承”一、独立的自定义类型二、继承三、类型嵌入3.1 什么是类型嵌入 四、接口类型的类型嵌入4.1 接口类型的类型嵌入介绍4.2 一个小案例 五、结构体类型的类型嵌入5.1 结构体类…

视频视觉效果制作After Effects 2023 MacOS中文

After Effects 2023是一款业界领先的动态图形和视觉特效软件。它提供了强大的工具集,帮助用户创建引人入胜的视觉效果、动态图形和电影级特效。新的版本带来了更快的渲染速度、增强的图像处理和优化的工作流程,使用户能够更高效地工作。无论您是在电影、…

Kotlin 进阶函数式编程技巧

Kotlin 进阶函数式编程技巧 Kotlin 简介 软件开发环境不断变化,要求开发人员不仅适应,更要进化。Kotlin 以其简洁的语法和强大的功能迅速成为许多人进化过程中的信赖伙伴。虽然 Kotlin 的初始吸引力可能是它的简洁语法和与 Java 的互操作性&#xff0c…

idea文件比对

idea文件比对 1.项目内的文件比对2.项目间的文件比对3. 剪切板对比4. 版本历史(不同分支和不同commit)对比 1.项目内的文件比对 在项目中选择好需要比对的文件(类),然后选择Compare Files Mac下的快捷键是Commandd, 这样的比对像是git冲突解决一样 …

Peter算法小课堂—单调子序列

最长上升子序列 dp解法: f[i]表示以i结尾的最长上升子序列的长度 按照倒数第二个选谁分类: 我们先扫描i号元素前的每个元素(正向),找出第一个比i号元素小的元素k号。①仍然选i号元素,f[i]。②选k号&…

selenium自动化测试入门 —— cookie 处理

driver.get_cookies() # 获得cookie 信息 driver.get_cookies(name) # 获得对应name的cookie信息 add_cookie(cookie_dict) # 向cookie 添加会话信息 delete_cookie(name) # 删除特定(部分)的cookie delete_all_cookies() # 删除所有cookie 示例: from sel…

2022年电工杯数学建模B题5G网络环境下应急物资配送问题求解全过程论文及程序

2022年电工杯数学建模 B题 5G网络环境下应急物资配送问题 原题再现: 一些重特大突发事件往往会造成道路阻断、损坏、封闭等意想不到的情况,对人们的日常生活会造成一定的影响。为了保证人们的正常生活,将应急物资及时准确地配送到位尤为重要…

MapReduce:大数据处理的范式

一、介绍 在当今的数字时代,生成和收集的数据量正以前所未有的速度增长。这种数据的爆炸式增长催生了大数据领域,传统的数据处理方法往往不足。MapReduce是一个编程模型和相关框架,已成为应对大数据处理挑战的强大解决方案。本文探讨了MapRed…

【深度学习】pytorch——Autograd

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 深度学习专栏链接: http://t.csdnimg.cn/dscW7 pytorch——Autograd Autograd简介requires_grad计算图没有梯度追踪的张量ensor.data 、tensor.detach()非叶子节点的梯度计算图特点总结 利用Autograd实…

全网最详细的【shell脚本的入门】

🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​ 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这…

【LearnOpenGL基础入门——2】搭建第一个OpenGL窗口

目录 一.配置GLFW 二.配置GLAD 三.第一个OpenGL窗口 3.1 GLFW设置 3.2 GLAD设置 3.3 视口 3.4 输入 3.5渲染 在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样…

Swift 和 Python 两种语言中带关联信息错误(异常)类型的比较

0. 概览 如果我们分别在平静如水、和谐感人的 Swift 和 Python 社区抛出诸如“Python 是天下最好的语言…” 和 “Swift 是宇宙第一语言…”之类的言论会有怎样的“下场”? 我们并不想对可能发生的“炸裂”景象做出什么预测,也无意比较 Swift 与 Pytho…

[pytorch]手动构建一个神经网络并且训练

0.写在前面 上一篇博客全都是说明类型的,实际代码能不能跑起来两说,谨慎观看.本文中直接使用fashions数据实现softmax的简单训练并且完成结果输出.实现一个预测并且观测到输出结果. 并且更重要的是,在这里对一些训练的过程,数据的形式,以及我们在softmax中主要做什么以及怎么…

14.1 Linux 并发与竞争

一、并发与竞争 并发:多个执行单元同时、并行执行。 竞争:并发的执行单元同时访问共享资源(硬件资源和软件上的全局变量等)易导致竞态。 二、原子操作 1. 原子操作简介 原子操作:不能再进一步分割的操作,一般用于变量或位操作。 …

关于iOS:如何使用SwiftUI调整图片大小?

How to resize Image with SwiftUI? 我在Assets.xcassets中拥有很大的形象。 如何使用SwiftUI调整图像大小以缩小图像? 我试图设置框架,但不起作用: 1 2 Image(room.thumbnailImage) .frame(width: 32.0, height: 32.0) 在Image上应用…

数二真题强化

高等数学 定积分 变上限积分求导 被积函数不能含有x,用换元法 线性代数

20.7 OpenSSL 套接字SSL加密传输

OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的。SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性。在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,…

leetcode-887-鸡蛋掉落(包含最大值最小化,最小值最大化的二分优化+滚动数组的原理)

这里写目录标题 题意解题KNN复杂度DP解法思想(超时)上述方法的优化 (最大值最小化二分优化)完整代码 逆向思维的DP代码空间优化(滚动数组)代码 题意 链接:leetcode-887-鸡蛋掉落 给你 k 枚相同…

AD CS证书攻击与防御:ESC1

简介 2021年的BlackHat大会上,Will Schroeder和Lee Christensen发布了关于Active Directory Certificate Services 利用白皮书《Certified Pre-Owned - Abusing Active Directory Certificate Services》。 攻击对象为AD CS,攻击手法主要是利用证书模版…

【算法专题】双指针—和为s的两个数

一、题目解析 只需在这个数组中找出两个数相加等于target即可 二、算法原理 1、暴力解法&#xff08;时间复杂度&#xff1a;O(n^2)&#xff09; 两个for循环嵌套遍历这个数组即可&#xff0c;不过会超时 class Solution { public:vector<int> twoSum(vector<int&…