使用selenium定位csdn主页的收藏夹文章(含完整Python代码)

news2024/11/25 9:30:03

目录

前提:准备好流程

第一步 导包

代码

第三方库的下载流程

第二步 设置谷歌浏览器及要打开的网页

第三步 定位元素

代码

元素定位方法


前提:准备好流程

第一步 导包

这里需要提前下载好第三方库:selenium,time。代码及selenium第三方库的下载流程如下:

代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from time import sleep

第三方库的下载流程

1.1右下角点击“Python xx”,选择“Interpreter Settings”

1.2如果下方没有selenium库,点击“+”号

1.3输入“selenium”,选择第一个,点击“Install Package”就可以下载

第二步 设置谷歌浏览器及要打开的网页

这里需要安装好与chrome浏览器版本匹配的chromedriver驱动。全局等待20秒的意思是:定位后面的每一个元素都会等待20秒,20秒内定位到了就直接继续运行后面的代码;20秒后还是定位不到会报no such element: Unable to locate element:xx。代码如下:

option=webdriver.ChromeOptions()
option.add_experimental_option("detach",True)
driver=webdriver.Chrome(options=option)

url="https://blog.csdn.net/2301_76297780?spm=1010.2135.3001.5343"
driver.get(url)
driver.implicitly_wait(20)   # 全局等待20秒
driver.maximize_window()  #放大网页,全屏

第三步 定位元素

在元素与元素之间加上sleep(2)强制等待,可以避免定位不到情况。代码及定位方法如下:

代码

# 点击收藏夹
driver.find_element(By.CSS_SELECTOR,"#userSkin > div.user-profile-body > div > div.user-profile-body-right > div.navList-box > div.navList > ul > li:nth-child(9)").click()
# 点击Linux
sleep(2)
driver.find_element(By.CSS_SELECTOR,"#userSkin > div.user-profile-body > div > div.user-profile-body-right > div.navList-box > div.mainContent > div > div:nth-child(1) > div > div.collect-list-header").click()
# 点击第一篇文章
sleep(2)
driver.find_element(By.CSS_SELECTOR,"#userSkin > div.user-profile-body > div > div.user-profile-body-right > div.navList-box > div.mainContent > div > div:nth-child(1) > div > div.collect-second-list > div:nth-child(1) > a > div").click()

元素定位方法

3.1鼠标停留在你想要定位的元素上,右键点击后选择“检查”

3.2根据箭头指示,选择“dock to bottom”

3.3如图右键点击高亮的行,选择“Copy”,再选“Copy selector” 。如果这里没有出现高亮,右键再点一次“收藏”按钮,选择“检查”。 定位其他元素也是一样的操作方法

运行结果(介意左上角和右下角弹窗的,可以再追加代码点掉“x”按钮)

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

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

相关文章

python多线程同步:Event对象

1.python事件Event相关函数介绍 set() — 全局内置标志Flag,将标志Flag 设置为 True,通知在等待状态(wait)的线程恢复运行 isSet() — 获取标志Flag当前状态,返回True 或者 False wait() — 一旦调用,线程将会处于阻塞状态,直到…

【Leetcode 80】删除排序数组中的重复项 II ——双指针

80. 删除排序数组中的重复项 II 给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在原地 修改输入数组并在使用 O(1) 额外空间…

VC++ ado 实现单表CURD

继续修改前文的资产管理源码; 新建一个数据库sds;把代码中的数据库连接改为连接此库; 新建下图一个表; 把之前的资产类别管理对话框改为下图所示;对话框ID也改为下图; 资产类别管理菜单和ID改为下图; 直接修改资产类别管理对话框类不太方便,新建一个对话框类,没有关联…

vue3基础知识一,安装及使用

一、安装vue3 需要安装node,然后在项目所在目录命令行执行以下代码。 npm create vuelatest 回车后需要配置以下内容。 二、安装所需的依赖包并运行 cd到项目目录,执行以下代码安装依赖包 npm i 运行项目 npm run dev 打开浏览器查看结果 ok&#…

携手罗振宇,泸州老窖用“眼前一亮”的方式开启全新700年

执笔 | 洪大大 编辑 | 萧 萧 又一段故事拉开帷幕,又一个品牌扣人心弦。 2023年12月31日跨年夜,由深圳卫视、得到APP联合出品的“时间的朋友”跨年演讲在深圳春茧体育馆正式开讲,现场,罗振宇用一段段睿智的话语与一个个鲜明的故…

系统架构设计面试指南(02)-MQ和文件存储

点击下方“JavaEdge”,选择“设为星标” 第一时间关注技术干货! 免责声明~ 任何文章不要过度深思! 万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案…

Go语言module,依赖管理方法

Go语言module,依赖管理方法 1.为什么需要依赖管理2.module管理配置流程打开go module配置一个国内的代理创建go.modGo Modules下的go get行为 3.GO env的其他配置GOSUMDBGONOPROXY/GONOSUMDB/GOPRIVATE 4.go.mod和go.sum概述5.Go Modules的语义化版本控制6.Go Modul…

Vue3-27-路由-路径参数的简单使用

什么是路径参数 在路由配置中,可以将【参数】放在【路由路径】中, 从而实现,同一个 路由,同一个组件,因路径参数不同,可以渲染出不同的内容。特点 : 1、当携带不同路径参数的路由相互跳转时&am…

Jupyter Notebook的10个常用扩展介绍

Jupyter Notebook(前身为IPython Notebook)是一种开源的交互式计算和数据可视化的工具,广泛用于数据科学、机器学习、科学研究和教育等领域。它提供了一个基于Web的界面,允许用户创建和共享文档,这些文档包含实时代码、…

关于解决引用第三方依赖突然失效的问题解决办法

目录 背景回顾解决办法结果 背景 出现该问题的背景是这样的。在项目中需要支持加载pdf文档的功能。所以采取了使用第三方PDF库的方法来实现加载pdf文档。集成完后,功能是正常的。后来过了一段时间,发现加载pdf的功能不能正常使用了,加载不出…

2023年的年度总结:不设边界、积极探索

23年的年度总结用一句话来说: 不设边界、积极探索 工作 从阿里来字节工作快3年了,这是一家年轻且充满活力的公司,伙食很棒,(跟刚毕业去网易那会伙食不相上下)。 作为一名应用层开发更多的时间都是和业务在…

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network 论文背景人群密度方法过去的发展历史早期方法基于轨迹聚类的方法基于特征回归的方法基于图像的方法 Multi-column CNN用于人群计数基于密度图的人群计数通过几何自适应核生成密度图密度图估计的多列…

回溯法解决01背包问题

输入(共n1行):物品数量、背包体积 下面n行依次输入物品价值和体积 需要注意的点: ①输入的顺序 ②存储价值和体积的数组下标从1开始 ③每一轮符合条件时,及时更新VALUE(价值总和) 从前面做的回溯法可以总结出一些…

bootstrap5开发房地产代理公司Hamilton前端页面

一、需求分析 房地产代理网站是指专门为房地产行业提供服务的在线平台。这些网站的主要功能是连接房地产中介机构、房产开发商和潜在的买家或租户,以促成买卖或租赁房产的交易。以下是一些常见的房地产代理网站的功能: 房源发布:房地产代理网…

009、引用

1. 引用与借用 下面的示例重新定义了一个新的 calculate_length 函数。与之前不同的是,新的函数签名使用了 String 的引用作为参数而没有直接转移值的所有权: fn main() { let s1 String::from("hello"); let len calculate_length(&s1…

病情聊天机器人,利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合

项目设计目的: 本项目旨在开发一个病情聊天机器人,利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合,实现对病情相关数据的存储、查询和自动回答。通过与用户的交互,机器人可以根据用户提供的症状描述,给出初步的可…

【C++杂货铺】C++11新特性——可变参数模板

文章目录 一、可变模板参数相关概念的引入二、获取参数包中参数的个数三、递归函数方式展开参数包四、逗号表达式展开参数包五、可变模板参数的实际应用——emplace相关接口5.1 回顾一下 push_back 的三种用法5.2 emplace_back 使用方法介绍5.3 听说 emplace_back 可以提高效率…

SCT2601,可替代LMR16006X/MP2459/MP2456;4.5V-60V Vin,0.6A,高效降压DCDC转换器

•宽输入范围:4.5V-60V •高达0.6A的连续输出电流 •0.765V2.5%反馈参考电压 •集成500mΩ高压侧MOSFET •低静态电流为80uA •轻负载下的脉冲跳过模式(PSM) •最小接通时间80ns •内置6ms软启动时间 •开关频率为700KHz •可编程输入电压欠压…

探秘AI数字人克隆系统OEM源码:实现24小时无人值守直播间的奥秘

随着人工智能技术的不断发展,AI数字人克隆系统OEM源码正在引起广泛的关注。其中,实现24小时无人值守直播间成为了许多企业和机构的追求。本文将深入探讨如何利用AI数字人克隆系统OEM源码实现24小时无人值守直播间,并揭示其背后的奥秘。 一、…

Acrel-2000MG工商业储能站能量管理系统-光伏储能一体化解决方案

安科瑞 崔丽洁 Acrel-2000MG储能能量管理系统是安科瑞专门针对工商业储能电站研制的本地化能量管理系统,可实现了储能电站的数据采集、数据处理、数据存储、数据查询与分析、可视化监控、报警管理、统计报表、策略管理、历史曲线等功能。其中策略管理,支…