【发布时间】:2016-05-18 01:27:37
【问题描述】:
我正在为 python 和 chrome 浏览器使用 selenium 库。
我需要点击网址中的链接:
http://www.youtube-mp3.org/
这个想法是下载在以前的代码中转换为 mp3 文件的视频列表。 我的脚本是:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
url2='http://www.youtube-mp3.org/'
chromedriver = 'C:\\exp\\chromedriver.exe' #where you have the file
browser = webdriver.Chrome(chromedriver)
browser.get(url2)
direc = browser.find_element_by_id("youtube-url")
direc.clear()
direc.send_keys("https://www.youtube.com/watch?v=nYh-n7EOtMA") #an example url
browser.find_element_by_id("btns").click()
到这里一切正常。
现在我需要点击视频转换后出现的下载链接。
该部分的 html 是:
<div id="dl_link" style="display: block;">
<a href="/get?video_id=nYh-n7EOtMA&h=-1&r=-1.1" style="display:none"><b>Download</b></a>
<a href="/get?video_id=nYh-n7EOtMA&ts_create=1463533555&r=MTg2LjYwLjE2MS4yMTE%3D&h2=5ad90182ae65fea567f844c3b6a933aa&s=145334"><b>Download</b></a><a href="/get?video_id=nYh-n7EOtMA&h=-1&r=-1.1" style="display:none">
<b>Download</b>
</a></div>
但是我只有在选择“检查对象”时才能看到,因为如果我选择“查看源代码”(在我粘贴了网址并出现视频和链接之后),里面什么都没有。强>
我试过了:
browser.find_element_by_partial_link_text("create").click()
但我得到了一个错误:
NoSuchElementException:消息:没有这样的元素
还有:
browser.find_element_by_name("dl_link").click()
错误:
NoSuchElementException:消息:没有这样的元素:无法定位 元素:{"method":"name","selector":"dl_link"}
还有:
browser.find_element_by_id("dl_link").click()
得到:
ElementNotVisibleException:消息:元素不可见
所以,我的问题是:
- 为什么我看不到下载链接的 html 脚本 按查看源代码?
- 是否可以通过以下方式完成该过程(下载 mp3 文件) 蟒蛇?
- 网页中包含 java 脚本这一事实与问题有关吗?
- 还有其他库可以做到这一点吗?
谢谢。
【问题讨论】:
-
改成这个
browser.find_element_by_name("dl_link").click()会很理想。 -
@nullpointer,我之前已经尝试过了,但没有结果。错误消息是:消息:没有这样的元素:无法找到元素:{“方法”:“名称”,“选择器”:“dl_link”}
标签: javascript python google-chrome selenium youtube