python- selenium-点击出现链接

时间:2016-05-18 01:27:38

标签: javascript python google-chrome selenium youtube

我正在使用selenium库来安装python和chrome浏览器。

我需要点击网址中的链接:

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&amp;h=-1&amp;r=-1.1" style="display:none"><b>Download</b></a>
    <a href="/get?video_id=nYh-n7EOtMA&amp;ts_create=1463533555&amp;r=MTg2LjYwLjE2MS4yMTE%3D&amp;h2=5ad90182ae65fea567f844c3b6a933aa&amp;s=145334"><b>Download</b></a><a href="/get?video_id=nYh-n7EOtMA&amp;h=-1&amp;r=-1.1" style="display:none">
  <b>Download</b>
 </a></div>

但是当我选择&#34;检查对象&#34;时,我只能看到它,因为如果我选择&#34;查看源代码&#34; (在我粘贴网址并显示视频和链接后),其中没有任何内容。

我尝试过:

browser.find_element_by_partial_link_text("create").click()

但我收到了一个错误:

  

NoSuchElementException:消息:没有这样的元素

以及:

browser.find_element_by_name("dl_link").click()

错误:

  

NoSuchElementException:消息:没有这样的元素:无法找到   element:{&#34; method&#34;:&#34; name&#34;,&#34; selector&#34;:&#34; dl_link&#34;}

以及:

browser.find_element_by_id("dl_link").click()

得到了:

  

ElementNotVisibleException:消息:元素不可见

所以,我的问题是:

  1. 为什么我无法看到下载链接的html脚本 按查看源代码?
  2. 是否可以完成该过程(下载mp3文件) 蟒?
  3. 网页中是否有java脚本与问题有关?
  4. 还有其他库吗?
  5. 感谢。

1 个答案:

答案 0 :(得分:1)

为什么元素出现在inspect函数中但不出现在源代码中?

HTML元素可以由某种脚本(例如Javascript,VBScript,...)自动生成,也可以从AJAX接收。源代码包含文本格式的响应,这意味着没有脚本有机会运行。另一方面,浏览器的检查功能显示当前状态

您可以采取哪些措施来缩小问题范围:

  1. 在浏览器中访问该页面并关闭Javascript。如果元素现在不存在,您可以放心地假设Javascript插入了有问题的元素。

  2. 如果上面的文字恰好是这种情况,请重新启用javascript并打开开发人员工具中的网络标签。重新加载页面并查看所请求的资源。检查是否可以在那里找到任何AJAX / API请求。如果是这样,请检查它们是如何制作的并尝试复制它们。

  3. 如果您找不到任何AJAX / API调用,则会以不同方式生成元素。检查脚本文件的源代码(html标记)并检查内部代码以获取更多信息。

  4. 我不知道有哪些库可以帮助你(尽管可能有一两个,我不会对Python进行太多代码编写),但它确实可以获得你需要的内容(可能是有点棘手,取决于网站所有者尝试了多少