Python - скачать видео с помощью парсинга - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь написать функцию, которая загружает видео, используя url веб-страницы в качестве аргумента для практики. У меня в основном два вопроса.

Первый: я не могу найти источник iframe со следующим кодом, чтобы переключиться на него в Python. Есть ли какие-либо причины или вещи, которые мне не хватает:

import requests
from bs4 import BeautifulSoup

url = 'https://fmovies.wtf/film/adventures-of-rufus-the-fantastic-pet.72o71'

r = requests.get(url)
soup = BeautifulSoup(r.content,'html.parser')

soup.find_all('iframe')

Второе: просматривая html веб-сайта в Google Chrome, я также не могу найти источник видео, которое Мне нужно было бы использовать для загрузки видео с. Если бы вы могли предложить, что мне не хватает, чтобы найти URL-адрес видео, который будет работать, код будет большим подспорьем:

import requests

def download_file(video_url):

    local_filename = 'potatoes.mp4'

    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024): 
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)

    return local_filename

download_file(**THIS IS WHERE THE VIDEO_URL WOULD GO**)

Любая помощь будет принята с благодарностью, направив меня в правильном направлении, поскольку я Я новичок в этом.

1 Ответ

0 голосов
/ 29 мая 2020

Если вы посмотрите на источник страницы view-source:https://fmovies.wtf/film/adventures-of-rufus-the-fantastic-pet.72o71 (скопируйте и вставьте его в Chrome адресную строку), вы увидите, что в источнике нет iframe, поэтому он, вероятно, отображается в DOM с помощью javascript во время выполнения.

Используя requests, вы получаете только источник с рендерингом на стороне сервера (ссылка, которой я поделился выше), и поскольку iframe не отображается сервером bs4, он не сможет его найти!

Что делать? Перейдите к веб-парсингу на основе Selenium или покопайтесь в сетевой панели, чтобы узнать, можете ли вы найти какой-либо запрос API, который извлекает URL-адрес iframe или любой фрагмент кода, который отображает этот iframe в DOM.

TL; Вы не можете очистить отрисованные на стороне клиента элементы с помощью библиотеки requests.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...