【问题标题】:Extract download link from yt-mp3 Python从 youtube-mp3 Python 中提取下载链接
【发布时间】:2016-03-13 17:48:50
【问题描述】:

我正在尝试使用 Python 为我的项目从 yt-mp3 提取下载链接,但我找不到它。

这是我的代码:

from BeautifulSoup import BeautifulSoup
from bs4 import BeautifulSoup
import urllib2

#http://www.yt-mp3.com/watch?v=cXAxpoC8o9w

url = "http://www.yt-mp3.com/watch?v="+"cXAxpoC8o9w"#YT video ID
hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
       'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
       'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
       'Accept-Encoding': 'none',
       'Accept-Language': 'en-US,en;q=0.8',
       'Connection': 'keep-alive'}


req = urllib2.Request(url,headers=hdr)
website = urllib2.urlopen(req)

html = website.read()
soup = BeautifulSoup(html)
links = soup.find_all('a')

for tag in links:
    link = tag.get('href',None)
    if link is not None:
        print link

【问题讨论】:

  • 打印出返回的HTML,没有<a>标签。

标签: python html parsing flask extract


【解决方案1】:

该网站的设计使您难以提取您尝试获取的链接文本。因此,使用urllib2request 不会有帮助。

要解决这个问题,您需要使用selenium 之类的东西来自动化网络浏览器。在这种情况下,您需要自动将鼠标悬停在下载按钮上。正是这个动作让链接被看到。

这可以按如下方式完成:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

browser = webdriver.Firefox()
browser.get("http://www.yt-mp3.com/watch?v=cXAxpoC8o9w")
time.sleep(6)
download = browser.find_element_by_class_name('download')
ActionChains(browser).move_to_element(download).perform()
print "MP3 link is", download.get_attribute("href")

可以进一步改进以删除sleep()

这将显示如下内容:

MP3 link is http://dl13.yt-mp3.com/download/tom-clancy-s-rainbow-six-vegas-2-gameplay-part-3.mp3?id=cXAxpoC8o9w&title=Tom+Clancy%27s+Rainbow+Six+Vegas+2+gameplay+part+3&t=1457899780&extra=a&h=75c5c580bf5c2791725b392d5b6cfcc75d8dd272

【讨论】:

  • 我正在使用 Cloud9 运行它,但它不起作用,还有其他解决方案吗??谢谢。
  • 问题是,你需要一些东西来运行页面中的 javascript。我没有检查它是否在加载后提出进一步的请求。这可能会给你一个线索。
  • Cloud9 不也支持 Selenium 测试吗?值得研究。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 2014-05-12
  • 2020-02-27
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多