简单使用selenium抓取微博热搜话题存储进Excel表格中

news2025/2/23 21:20:27

 

#test.py

import requests
from selenium import webdriver
import time
from write import write

#首先打开浏览器
drive = webdriver.Chrome()

#设置隐式等待:等待元素找到,如果找到元素则马上继续执行语句,如果找不到元素,会在设定时间内不断请求寻找元素,当超过设定时间还未找到,则抛出异常
#这里设置等待5s
drive.implicitly_wait(5)

#将浏览器窗口最大化
drive.maximize_window()

#进入网址页面
drive.get('https://weibo.com/newlogin?tabtype=topic&gid=&openLoginLayer=0&url=https%3A%2F%2Fwww.weibo.com%2F')

#打开页面后页面将停留3秒
#time.sleep(3)

#通过css定位寻找元素,这里用class定位
#热搜话题标题
titles = drive.find_elements_by_css_selector(".HotTopic_tit_eS4fv")
#热搜话题内容
contents = drive.find_elements_by_css_selector(".HotTopic_wbtext_iNPG5")
#热搜话题阅读数量
reads = drive.find_elements_by_css_selector(".HotTopic_num_1H-j8>span:first-child")
#热搜话题讨论数量
discusss = drive.find_elements_by_css_selector(".HotTopic_num_1H-j8>span:last-child")

#获取titles的长度
length = len(titles)

#调用写入表格方法
write(1,length,titles)
write(2,length,contents)
write(3,length,reads)
write(4,length,discusss)

#关闭浏览器
drive.quit()
#write.py

from openpyxl import load_workbook,Workbook


def write(pt,length,data):
    #设置异常处理,当try内的代码执行有误,将抛出except里的异常提示
    try:
        #加载已有表单
        wb = load_workbook('./weibo.xlsx') #  ./路径为同个文件夹下查找文件; ../为同个父级路径下查找文件
        #找到表单里的第一个sheet
        sh = wb.active
        #行数循环,第一行是表头,因此从第二行开始,range()为左闭右开,range(0,8)即0开始,7结束
        for i in range(2,length+2):
            #将对应位置的单元格填充进数据
            sh.cell(row=i,column=pt).value=data[i-2].text    #text:获取元素的描述,即获取找到的元素中的 <p>天下第一<p> 天下第一
        #保存文档
        wb.save('./weibo.xlsx')
    except Exception:
        print("写入有误")


# def test():
      #创建一个表单
#     wb = Workbook()
#     sh = wb.active
#     title = ["标题","内容"]
      #将表头的名称插入表单
      #方法一
#     # for i in range(1,3):
#     #     sh.cell(row=1,column=i).value = title[i-1]
      #方法二
#     sh.append(title)
#     print("成功")
#     wb.save("./test.xlsx")

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

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

相关文章

【性能测试】性能测试之性能测试指标详解(详细)

前言 刚开始&#xff0c;以为做性能测试&#xff0c;就是做些脚本、参数化、关联&#xff0c;压起来之后&#xff0c;再扔出一个结果。 但实际上不止这些内容&#xff0c;还要加上性能分析&#xff0c;关注调优之后响应时间有多大的提升&#xff0c;TPS 有多大的提高&#xf…

探索 HTML 语义化:让你的网页更有意义(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针II

目录 问题描述 解题过程 官方题解 问题描述 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 N…

ELK(三)—安装可视化工具

目录复制 目录 一、ElasticSearch-Head可视化工具介绍1.1特性&#xff1a;1.2用法&#xff1a; 二、安装2.1docker安装2.2Chrome插件安装 一、ElasticSearch-Head可视化工具介绍 ElasticSearch-Head 是一个基于浏览器的 Elasticsearch 可视化工具&#xff0c;它提供了一个直观…

Linux中的网络时间服务器

本章主要介绍网络时间的服务器 使用chrony配置时间服务器配置chrony客户端服务器同步时间 1.1 时间同步的重要性 一些服务对时间要求非常严格&#xff0c;例如如图所示的由三台服务器搭建的ceph集群 这三台服务器的时间必须保持一致&#xff0c;如果不一致&#xff0c;就会显…

随机Numpy数组的创建方法(第2讲)

随机Numpy数组的创建方法 &#xff08;第2讲&#xff09;         &#x1f379;博主 侯小啾 感谢您的支持与信赖。☀️ &#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&…

python socket编程6 - 使用PyQt6 开发UI界面实现TCP server和TCP client单机通讯的例子

使用PyQt6 开发UI界面实现TCP server和TCP client单机通讯的示例。 一、PyQt6 实现的界面 二、TCP server代码的修改示意 界面提供网络参数的配置&#xff0c;以及提供人机交互过程中的数据获取和显示。 1、把上面的server代码封装成两个部分 A、class Server 负责接受UI界面…

6.1 U-boot的使用

由于Ubuntu出现了一些问题&#xff0c;后面都是使用正点原子官方版本。 一、U-boot使用 1. U-boot源码 Linux 系统要启动需要通过 bootloader 程序引导&#xff0c;也就说芯片上电以后先运行一段 bootloader 程序。这段 bootloader 程序会先初始化 DDR 等外设&#xff0c;然后…

Redis生产实战-Redis集群故障探测以及降级方案设计

Redis 集群故障探测 在生产环境中&#xff0c;如果 Redis 集群崩溃了&#xff0c;那么会导致大量的请求打到数据库中&#xff0c;会导致整个系统都崩溃&#xff0c;所以系统需要可以识别缓存故障&#xff0c;限流保护数据库&#xff0c;并且启动接口的降级机制 降级方案设计 …

【c】小红的漂亮串

#include<stdio.h> #include<string.h> int main() {char arr[1000];int count0;gets(arr);//在数组中输入字符串int lenstrlen(arr);//求字符串长度printf("%d\n",len);for(int i0;i<len;i){if(arr[i]r){if(arr[i1]e){if(arr[i2]d){countcount1;}}}}…

C#winform上下班打卡系统Demo

C# winform上下班打卡系统Demo 系统效果如图所示 7个label控件(lblUsername、lblLoggedInEmployeeId、lab_IP、lblCheckOutTime、lblCheckInTime、lab_starttime、lab_endtime)、3个按钮、1个dataGridView控件、2个groupBox控件 C#代码实现 using System; using System.Dat…

1、初识 llvm源码编译 及virtualbox和ubuntu环境搭建

很久没更新了&#xff0c;最近准备研究逆向和加固&#xff0c;于是跟着看雪hanbing老师学习彻底搞懂ollvm&#xff0c;终于把所有流程跑通了&#xff0c;中间遇到了太多的坑&#xff0c;所以必须记录一下&#xff0c;能避免自己和帮助他人最好。 环境搭建太重要了&#xff0c;…

c语言指针详解下

指针下 1 指针与字符串 int main01(){//指针与字符串char a[] "helloworld";//定义了一个字符数组,字符数组内容为helloworld\0//定义一个指针用来保存数组首元素的地址char * p a;printf("%s\n",p);//%s打印一个字符串,要的是首个字符的地址printf(…

使用Rust 构建C 组件

协议解析&#xff0c;这不就很快了&#xff0c;而且原生的标准库红黑树和avl 树支持&#xff0c;异步tokio 这些库&#xff0c;编写应用组件就很快了 rust 标准库不支持 unix 的消息队列&#xff0c;但是支持 shm 和 uds&#xff0c;后者从多方面考虑都比&#xff0c;消息队列更…

flutter添加全局水印

效果&#xff1a; 可以直接引用&#xff1a;disable_screenshots: ^0.2.0 但是有时候直接引用会报错&#xff0c;可以不引用插件直接把下面的源码工具类放在项目里面 工具类源码&#xff1a; import dart:io; import dart:math;import package:flutter/cupertino.dart; impor…

oomall课堂笔记

一、项目分层结构介绍 controller层&#xff08;控制器层&#xff09;&#xff1a; 作用&#xff1a;负责输出和输入&#xff0c;接收前端数据&#xff0c;把结果返回给前端。 1.处理用户请求&#xff0c;接收用户参数 2.调用service层处理业务&#xff0c;返回响应 servi…

uniapp 打开文件管理器上传(H5、微信小程序、android app三端)文件

H5跟安卓APP 手机打开的效果图&#xff1a; Vue页面&#xff1a; <template><view class"content"><button click"uploadFiles">点击上传</button></view> </template><script>export default {data() {return…

【Linux】已安装 powerlevel10k,报错 command not found: p10k

问题描述 在配置 zsh 时&#xff0c;已经安装了 powerlevel10k&#xff0c;但是当尝试启动 Powerlevel10k 配置向导时&#xff0c;出现了以下错误&#xff1a; p10k configure zsh: command not found: p10k原因分析 出现这个错误的原因是因为 zsh 终端还没有加载最新的配置…

Kafka性能调优:高吞吐、低延迟的数据流

Apache Kafka作为一种高性能、分布式流处理平台&#xff0c;对于实时数据的处理至关重要。本文将深入讨论Kafka性能调优的关键策略和技术&#xff0c;通过丰富的示例代码为大家提供实际操作指南&#xff0c;以构建高吞吐、低延迟的数据流系统。 Broker 配置的优化 首先&#…

[全志Tina/Linux]全志在线生成bootlogo工具

一、需求 由于全志的bootlogo文件要求使用bmp格式的32位RGBA图像&#xff0c;经测试在使用不同版本的ps软件修图时&#xff0c;导出的bootlogo.bmp经常无法被全志uboot识别&#xff0c;因此使用在线工具转换。 二、操作 1、登录工具网站 https://online-converting.com/ima…