python用selenium网页模拟时xpath无法定位元素解决方法2

有时我们在使用python selenium xpath时,无法定位元素,红字显示no such element。上一篇文章写了1种情况,是包含iframe的,详见https://blog.csdn.net/Sixth5/article/details/140342929。

本篇写第2种情况,就是xpath定位的元素中有变化的数字,比如wb这个上传视频的网址,"上传视频"的按钮,我们点击copy xpath后,得到的xpath是//@id="video_button_upload_1721110144093",这里面有数字1721110144093,它是随着网页变化的,刷新网页后又会变化,所以给我们用xpath定位增加了难度。

我们发现1721110144093这个数字在网页代码中是存在的,所以解决方法是使用正则定位抓取数字,然后拼接出xpath再用于定位元素。我们需要用到的代码如下,主要使用的是beautifulSoup读取网页,再用re正则(.
?)精准定位数字的位置,由于网页代码中有多个重复内容,所以使用list容器,再使用data1,即list里的第一个元素,准确把数字提取出,然后拼接,就拿到最终的动态变化的xpath啦!!

python 复制代码
import time
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium import webdriver
from bs4 import BeautifulSoup #网页解析,获取数据
import re   #正则表达式,进行文字匹配

web = Chrome()
web.maximize_window()
url = 'https://weibo.com/upload/channel'
web.get(url)
time.sleep(10)
web.find_element(By.XPATH,'//*[@id="__sidebar"]/div/div[2]/div[1]/div/button').click() # 点击立即登录
time.sleep(30)#扫码登录
for i in range(0, 3):
    html = web.page_source
    #print(html)
    soup = BeautifulSoup(html, "html.parser")
    findLink = re.compile(r'<button class="woo-button-main woo-button-flat woo-button-primary woo-button-m woo-button-round VideoUpload_btn1_2avmO" id="video_button_upload_(.*?)"><span class="woo-button-wrap"><!-- --><!-- --><!-- --><span class="woo-button-content">上传视频</span></span></button>')
    data = []
    for item in soup.find_all('button'):
      #  print(item)
        item = str(item)
        link = re.findall(findLink, item)
     #   print(link)
        data.append(link)
    code1 = ";".join(data[1])
    time.sleep(1)
    web.find_element(By.XPATH,'//*[@id="video_button_upload_'+ code1+'"]').click() # 点击上传视频

另外附:
解决方法3:

相关推荐
金銀銅鐵21 小时前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio1 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户0332126663671 天前
使用 Python 从零创建 Word 文档
python
Csvn1 天前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽1 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户556918817531 天前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
兵慌码乱2 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
luckdewei2 天前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化
python
aqi002 天前
15天学会AI应用开发(八)使用向量数据库实现RAG功能
人工智能·python·大模型·ai编程·ai应用