询问利用selenium扒取动态网页网址

问题遇到的现象和发生背景

学习python利用selenium扒取动态网页的信息时

遇到的现象和发生背景,请写出第一个错误信息

利用selenium触发点击事件后网页产生的元素无法定位提取,没显示出错

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
import sys
from selenium import webdriver  # 从selenium导入webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

s = Service(r'C:\Program Files\Google\Chrome\Application\chromedriver.exe')
driver = webdriver.Chrome(service=s)
url = "https://ddys.art/hachi-a-dogs-tale/"
driver.get(url)
try:
    driver.implicitly_wait(20)      # 等待页面加载完成
except:
    print('出错了1')
    sys.exit()

click = driver.find_element(By.CLASS_NAME, "vjs-big-play-button")
click.click()  # 点击播放以加载代码
driver.implicitly_wait(5)   # 等待确保点击后网页的元素更新,出现需要的网址链接

提取不到网页操作后的代码,问题应该是这行以下的代码,但我不知道哪里出问题
find_sth = driver.find_element(By.CLASS_NAME, "vjs-tech")  # 定位目标所在标签
print(find_sth.get_attribute("src"))  # 取出src的值输出
driver.close()  # 关闭网页

这是动态网页在点击事件后出现的,目的就是为了提取其中src对应的下载地址

<video id="vjsp_html5_api" class="vjs-tech" x5-playsinline="" preload="none" webkit-playsinline="" playsinline="playsinline" tabindex="-1" role="application" src="https://weibo.bh3.com/upload/2023/01/21/0/frbsqoi1nqyijigw4q6h09xtamj42w5p_3529623918024665204.mp4?filename=1.mp4"></video>

运行结果及详细报错内容


进程已结束,退出代码0

没有报错

目的是提取网页中的网址,也试过用.page_source提取更新后的元素,再通过re或bs4提取,但.page_source也不行

首先你要确定那些点击事件起作用了,你可以通过获取page_source后先输出来,在page_source中人为的找下里面到底有没有那个video,有的话说明获取到了,只是没有解析到。解析时,你改成用id定位看能不能定位到,那个video有id属性。望采纳

driver = webdriver.Edge()
url = "https://ddys.art/hachi-a-dogs-tale/"
driver.get(url)
time.sleep(2)
play = driver.find_element(By.CLASS_NAME, "vjs-big-play-button")
play.click()
find_sth = WebDriverWait(driver, 10).until(lambda x: x.find_element(By.CLASS_NAME, "vjs-tech"))
print(find_sth.get_attribute("src"))

img

等待几秒之后可以,大概点击了播放之后,只是一部分内容改变了,并没有重新加载网页,所以implicitly_wait(5)其实并没有进行等待。

import time
time.sleep(1)
find_sth = driver.find_element(By.CLASS_NAME, "vjs-tech")  # 定位目标所在标签
print(find_sth.get_property("src"))

结果

https://weibo.bh3.com/upload/2023/01/21/0/frbsqoi1nqyijigw4q6h09xtamj42w5p_3529623918024665204.mp4?filename=1.mp4

Process finished with exit code 0