2017-02-08 2 views
12

У меня есть скрипт Python, который сбрасывает атрибут src элемента <video> на странице html. С помощью инспектора браузера на видео this page я могу увидеть элемент видео, который мне нужно очистить, но просмотр исходного файла напрямую показывает только файлы JavaScript с использованием ember-приложений.Scrape внутренний кадр HTML

Что нужно сделать для доступа к разметке «внутренний кадр», которая содержит элемент <video>, чтобы я мог очистить атрибут src?

Edited так что это не так широк

ответ

7

Нет необходимости идти весь маршрут браузер/селен. Просто сделайте немного больше исследований, и вы увидите, как это работает:

Для URL-адреса винограда https://vine.co/v/i3pQ70vK3iv вам нужен файл json, который описывает видео.

Так просто очистить URL-адрес https://archive.vine.co/posts/i3pQ70vK3iv.json. Это будет возвращать файл как:

{ 
    "username": "Bleacher Report", 
    "userIdStr": "906307026416705536", 
    "postId": 1352573572862066700, 
    "verified": 1, 
    "description": "", 
    "created": "2016-06-09T06:14:43.000000", 
    "permalinkUrl": "https://vine.co/v/i3pQ70vK3iv", 
    "userId": 906307026416705500, 
    "profileBackground": "0x333333", 
    "vanityUrls": [ 
    "BleacherReport" 
    ], 
    "entities": [], 
    "postIdStr": "1352573572862066688", 
    "comments": 293, 
    "reposts": 2384, 
    "videoLowURL": "http://mtc.cdn.vine.co/r/videos_r2/DC69CF91B61352573549554077696_558739dd749.17.0.4126553130190094381.mp4?versionId=oVIxbcFKL5aaqsbMx_q.7wt4zEnhgQ0w", 
    "loops": 19182516, 
    "videoUrl": "http://mtc.cdn.vine.co/r/videos/DC69CF91B61352573549554077696_558739dd749.17.0.4126553130190094381.mp4?versionId=av0W8OaLWSzghq.9__iKdSU4y75FDNg.", 
    "videoDashUrl": "http://mtc.cdn.vine.co/r/videos_dashhd/DC69CF91B61352573549554077696_558739dd749.17.0.4126553130190094381.mp4?versionId=98zVYTYAx16DJka7Oa1yQu20utGrQch9", 
    "thumbnailUrl": "http://v.cdn.vine.co/r/thumbs/DC69CF91B61352573549554077696_558739dd749.17.0.4126553130190094381.mp4.jpg?versionId=7LmJNEI3C6bsHkF3t9jqu5k1O2xEHo9l", 
    "explicitContent": 0, 
    "likes": 6593 
} 

Вы найдете URL для самого видео в качестве атрибута videoUrl в возвращаемом JSON.

2

JS выполняется на клиенте, чтобы заполнить видео элементы страницы, так что вам нужен веб-драйвера есть страница полностью заполнить, чтобы получить доступ к элементам. Вы можете попробовать Селен:

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("https://vine.co/v/i3pQ70vK3iv") 
video = driver.find_element_by_tag_name('video') 
print video.get_attribute('src') 
driver.close() 

Если вы хотите, чтобы запустить драйвер «обезглавленный» (без графического интерфейса) не видят Is it possible to run selenium (Firefox) web driver without a GUI?