How to download this video using Selenium

2019-02-23 06:15发布

问题:

I'm trying to make an python script to download videos from animefreak.tv so I can watch them offline while I'm on a roadtrip. Plus I thought it was a good opportunity to learn some webscraping.

I wrote this so far to download from this link http://animefreak.tv/watch/hacklegend-twilight-bracelet-episode-1-english-dubbed-online-free

URL = 'http://animefreak.tv/watch/one-piece-episode-1-english-dubbed-subbed'
IFRAME_POSITION = 2

# driver = webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true'])
driver = webdriver.Chrome()

driver.get(URL)
src = driver.page_source
parser = BeautifulSoup(src, 'lxml')


driver.switch_to.frame(IFRAME_POSITION)
video = driver.find_element(By.XPATH, '//*[@id="player"]/div[2]/video')


touch = webdriver.TouchActions(driver)
touch.tap(video)
print('src: ', video.get_property('src'))

driver.close()

Whenever I run the script the src attribute doesn't show up. What am I doing wrong? Thank you!

回答1:

interesting that you are using both beautifulsoup and selenium. this task might be able to be accomplished using either one exclusively (with exceptions)

You won't use Selenium to download the video, per se. You'll use the language of choice. In your case, Python.

Python 2

import urllib
...
video_url = video.get_property('src')
urllib.urlretrieve(video_url, 'videoname.mp4')

Python 3

import urllib.request
...
video_url = video.get_property('src')
urllib.request.urlretrieve(video_url, 'videoname.mp4')

You'll probably have to calculate videoname.mp4 somehow so you don't get duplicates