爬取简书1
import osfrom selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.edge.service import Service
import timeimport pandas as pdfrom selenium.webdriver.common.action_chains import ActionChainsdef get_aws():# 如果 WebDriver 的路径没有被添加到系统的 PATH 环境变量中,需要指定它的路径edge_driver_path = 'E:/sleep_lr/edgedriver_win64/msedgedriver.exe'service = Service(edge_driver_path)# # 创建 Edge 浏览器实例driver = webdriver.Edge(service=service)if not os.path.exists("cookies.pkl"):driver.get("https://www.jianshu.com/")input("ok")pd.to_pickle(driver.get_cookies(), "cookies.pkl")else:driver.get("https://www.jianshu.com/")driver.delete_all_cookies()for cookie in pd.read_pickle("cookies.pkl"):driver.add_cookie(cookie_dict=cookie)## 打开一个网页data=pd.read_pickle("jian_fen.pkl")text_list=[]for name, strs, like, url, one_str_price, get_like_str in data.values:driver.get(url)info=driver.find_elements(By.XPATH,'//div[@class="info"]/ul')[0].textactions = ActionChains(driver)# 先悬浮再点击actions.move_to_element(driver.find_elements(By.XPATH, '//i[@class="iconfont ic-hot"]')[0]).click().perform()time.sleep(5)one=[o.text for o in driver.find_elements(By.XPATH,'//ul[@class="note-list"]/li')]text_list.append([info,one])print(one)pd.to_pickle(text_list, "jian_shu1.pkl")if __name__ == '__main__':get_aws()
这段代码是一个使用 Python 语言编写的脚本,它使用了 Selenium 库来自动化操作网页浏览器,特别是 Microsoft Edge 浏览器。以下是代码的主要功能和步骤的解释:
- 引入所需的库:
os:用于与操作系统交互,例如检查文件是否存在。selenium.webdriver.common.by.By:用于定位网页元素。selenium.webdriver:包含WebDriver的接口。selenium.webdriver.edge.service.Service:用于启动Edge浏览器服务。time:用于暂停脚本执行,以便等待网页加载或操作完成。pandas as pd:用于数据处理和分析,这里主要用于序列化(保存)和反序列化(加载)cookie。selenium.webdriver.common.action_chains.ActionChains:用于模拟更复杂的用户操作,如鼠标悬停和点击。
- 定义
get_aws函数:- 这个函数负责启动浏览器、管理cookies、访问简书网站,并抓取特定文章的热门评论。
- 设置 Edge WebDriver:
- 定义
edge_driver_path变量为 Edge WebDriver 的可执行文件路径。 - 创建一个
Service对象,将 WebDriver 的路径传递给它。 - 创建一个
webdriver.Edge实例,用于控制浏览器。
- 定义
- 管理 Cookies:
- 检查是否存在一个名为 “cookies.pkl” 的文件。如果不存在,则访问简书网站,并在用户登录后手动保存 cookies(通过
input("ok")暂停执行)。 - 如果 “cookies.pkl” 文件存在,则加载 cookies,以便在浏览器中保持登录状态。
- 检查是否存在一个名为 “cookies.pkl” 的文件。如果不存在,则访问简书网站,并在用户登录后手动保存 cookies(通过
- 访问简书文章页面并抓取数据:
- 从 “jian_fen.pkl” 文件中读取包含文章信息的 DataFrame。
- 遍历 DataFrame 中的每一行,获取文章的 URL,并访问这些 URL。
- 在每个文章页面上,抓取文章信息(如阅读量、评论数等)和热门评论。
- 执行鼠标悬停和点击操作:
- 使用
ActionChains对象模拟用户将鼠标悬停在热门评论图标上,并点击它以展开评论列表。
- 使用
- 等待并抓取评论:
- 等待5秒钟以允许评论加载。
- 抓取评论列表中的文本。
- 将抓取的信息保存到
text_list中,并将这个列表序列化到 “jian_shu1.pkl” 文件中。
- 主程序入口:
- 当该脚本作为主程序运行时,调用
get_aws()函数。
请注意,代码中有几个地方需要手动干预(例如,登录简书网站并保存 cookies),并且它依赖于外部文件(“cookies.pkl” 和 “jian_fen.pkl”)的存在。
此外,该脚本可能存在一些问题,例如缺少异常处理,以及硬编码的等待时间(time.sleep(5)),这可能会导致脚本不稳定或效率低下。在使用此脚本之前,需要确保所有外部依赖项都正确设置,并且脚本在运行环境中经过充分测试。
- 当该脚本作为主程序运行时,调用
相关文章:
爬取简书1
import osfrom selenium.webdriver.common.by import By from selenium import webdriver from selenium.webdriver.edge.service import Service import timeimport pandas as pdfrom selenium.webdriver.common.action_chains import ActionChainsdef get_aws():# 如果 WebDr…...
基于STM32单片机设计的矿山环境作业安全监测系统
文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】需求总结1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 模块的技术详情介绍【1】BC26-NBIOT模块【2】DHT11温湿度模块【3】PM2.5粉尘模块二…...
大数据linux操作系统
第一关:Linux的初体验 答案: cd / ls -a / (里面有空格要注意) 第二关:Linux的常用命令 答案: touch newfile mkdir newdir cp newfile newdir/newfileCpy 第三关:Linux查询命令帮助语句…...
MySQL 【日期】函数大全(七)
目录 1、UNIX_TIMESTAMP() 将指定的日期/日期时间转为 UNIX 时间戳值。 2、WEEK() 返回给定日期位于当年的第几周。 3、WEEKDAY() 返回给定日期的工作日编号。 4、WEEKOFYEAR() 返回给定日期位于当年的第几周 5、YEAR() 提取日期的年份部分并作为数字返回。 6、YEARWEEK()…...
IP报文格式、IPv6概述
IPv4报文格式 IPv4报文首部长度至少为20字节(没有可选字段和填充的情况下),下面来逐一介绍首部各个字段的含义 Version版本:表示采用哪一种具体的IP协议,对于IPv4来说该字段就填充4以表示,如果是IPv6就填充6IHL首部长度ÿ…...
学习记录:js算法(六十七):任务调度器
文章目录 任务调度器思路一思路二 任务调度器 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表,用字母 A 到 Z 表示,以及一个冷却时间 n。每个周期或时间间隔允许完成一项任务。任务可以按任何顺序完成,但有一个限制:两个…...
5分钟8图:Cursor如何让编程效率提升5倍?
5分钟8图,看Cursor如何革新AI编程? 作为一名AI编程的实践者,我很高兴为大家介绍Cursor - 一款基于VSCode的创新型集成开发环境(IDE),它巧妙地融合了先进的AI技术,为编程工作带来前所未有的便利。让我们通过多个图表深入了解Cursor的特性和工作流程。 Cursor的核心…...
车载实操:一对一实操学习、CANoe实操学习、推荐就业机会、就业技术支持、协助面试辅导
FOTA模块中OTA的知识点:1.测试过程中发现哪几类问题? 可能就是一个单键的ecu,比如升了一个门的ecu,他的升了之后就关不上,还有就是升级组合ecu的时候,c屏上不显示进度条。 2.在做ota测试的过程中ÿ…...
PACT 在微服务架构中的用途
在微服务架构盛行的今天,如何确保各个微服务之间的交互正确且稳定成为了一个关键问题。PACT(一种契约测试工具)在这个领域发挥着重要的作用。那么,PACT 在微服务架构中的用途到底是什么呢? 一、微服务架构的挑战 微服…...
LeetCode 3200.三角形的最大高度:枚举
【LetMeFly】3200.三角形的最大高度:枚举 力扣题目链接:https://leetcode.cn/problems/maximum-height-of-a-triangle/ 给你两个整数 red 和 blue,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行…...
ssm基于java的招聘系统设计与开发+vue
系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 第1章 绪论 1 1.1 课题背景 1 1.2 课题意义 1 1.3 研究内容 1 第2章 开发环境与技术 3 2.1 Java语言…...
【网络原理】TCP/IP五层网络模型之网络层-----IP协议详解,建议收藏!!
💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 前几篇文章中我们深入研究了TCP协议,因为TCP协议在我们日常开发中的使用频率非常高。而相比之下,IP协议与我们普通程序员关系就没那么近了。一般是专门开发…...
三次握手与四次挥手
一、三次握手 AB之间 都会发送一个syn - ack。 A 先发 syn ,B收到 。 A: 什么都不知道 B:知道A可以发送。 B发送syn-ack,A收到 。 A: 知道B可以收也可以发 , B知道A可以发送。 A发送ack,B收到。 A : 知道B可以收也可以发 , B知道A…...
awk命令学习记录
awk命令 awk命令 表示将一行数据按特定分割符分割成多列,而从而选取特定列数的数据,默认分割符为空格,连接符默认也是空格 // 1. 更换分割符 awk -F : 1.txt // 1.txt为你的文件名 // 2. 打印多列 awk {print $1,$2} // $0为整行ÿ…...
科大讯飞嵌入式面试题及参考答案
平衡二叉树和普通二叉树的区别 平衡二叉树是一种特殊的二叉树,与普通二叉树相比有以下显著区别: 一、定义与结构 普通二叉树:二叉树是每个节点最多有两个子树的树结构。它没有特定的平衡要求,节点的分布可能比较随机。例如&#x…...
C Lua5.4.6 SDK开发库
下载 .lua执行 #include "lua.h" #include "lualib.h" #include "lauxlib.h"static int luaopen_ui(lua_State *L) {static const struct luaL_Reg lib_f[] = {{"saveFile", saveFile},{"loadFile", loadFile},{NULL, NULL…...
无线网卡知识的学习-- wireless基础知识(cfg80211)
1. 基本概念 mac80211 :这是最底层的模块,与hardware offloading 关联最多。 mac80211 的工作是给出硬件的所有功能与硬件进行交互。(Kernel态) cfg80211:是设备和用户之间的桥梁,cfg80211的工作则是观察跟踪wlan设备的实际状态. (Kernel态) nl80211: 介于用户空间与内核…...
Next.js 学习 - 路由系统(Routing)
Next.js 的路由系统基于文件系统,这意味着文件和文件夹的结构决定了 URL 路径。相较于传统的 React 应用中的路由配置,Next.js 的文件路由系统非常简洁和自动化。下面是对 Next.js 路由的详细介绍。 1. 目录结构 在 Next.js 13 中,app 目录…...
Unity XR PICO 手势交互 Demo APK
效果展示 用手抓取物体,调整物体位置和大小等 亲测pico4 企业版可用, 其他设备待测试 下载链接: 我标记的不收费 https://download.csdn.net/download/qq_35030499/89879333...
EM算法学习
1.EM算法的介绍 可以发现:计算出θA和θB的值的前提是知道A、B币种的抛掷情况。 所以我们需要使用EM算法:求出每轮选择硬币种类的概率 2.EM算法执行过程: 第一步:首先初始化设置一组PA和PB证明的值。然后通过最大似然估计得到每…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
