Я пытаюсь извлечь ссылку .mp4 с веб-сайта, которая отображается только на вкладке «Проверить элемент» в веб-браузерах.
Я прочитал в Интернете, что мне нужно использовать селен и, например, PhantomJS, чтобы получить этот код. Я попробовал это, но я получаю файл HTML, который виден в «Показать исходный код».
from selenium import webdriver
driver = webdriver.PhantomJS(executable_path=r'C:\Users\Nevendary\Desktop\phantomjs-2.1.1-windows\bin\phantomjs')
driver.get("https://filmovitica.com/pucanj-u-sljiviku-preko-reke-1978-domaci-film-gledaj-online/")
driver.implicitly_wait(30)
print(driver.page_source)
Я ожидаю получить код, который включает: https://fs40.gounlimited.to/tea5u5akd32qzxffffpqyfndb6resauu5w43w7enoxkvu6sjtrf5hfhbz3ika/v.mp4"
но я получаю обычный HTML-код веб-сайта



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вместо PhantomJS попробуйте использовать ChromeDriver с параметрами headless. Это дает мне результат, который вам нужен.
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
driver=webdriver.Chrome(executable_path='path of chrome driver',options=chrome_options)
driver.get("https://filmovitica.com/pucanj-u-sljiviku-preko-reke-1978-domaci-film-gledaj-online/")
print(driver.page_source)
Примечание. Вы можете загрузить chromedriver по следующей ссылке, если у вас не установлен chromedriver в зависимости от совместимости вашего браузера. Пожалуйста, прочитайте примечания к выпуску перед загрузкой любого драйвера chrome для совместимости. Скачать драйвер для Chrome
Другой способ сделать это с помощью Beautiful Soup, библиотеки Python.
import requests
from bs4 import BeautifulSoup
data=requests.get('https://filmovitica.com/pucanj-u-sljiviku-preko-reke-1978-domaci-film-gledaj-online/')
soup=BeautifulSoup(data.text,'html.parser')
print(soup)
Примечание: его легко установить pip install beautifulsoup4 Вы можете проверить следующую ссылку о Beautiful Soup Красивый суп
Вместо поиска источника страницы вы можете напрямую получить атрибут src элемента видео, который содержит ссылку, которую вы ищете.
Ссылка на видео находится в iframe. получение источника страницы без переключения на кадр не вернет ссылку на видео.
Я использовал chromedriver для примера.
Попробуй это:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(executable_path = "chromedriver.exe")
wait = WebDriverWait(driver, 20)
driver.get("https://filmovitica.com/pucanj-u-sljiviku-preko-reke-1978-domaci-film-gledaj-online/")
vframe = driver.find_element_by_xpath("//iframe[@width='900']")
driver.switch_to.frame(vframe)
videoElement = wait.until(EC.visibility_of(driver.find_element(By.CSS_SELECTOR, "#vplayer > div > div.container > video")))
print(videoElement.get_attribute('src'))
driver.quit()
При проверке html действительно кажется, что ссылка создается внутри того же URL-адреса, который использует iframe. Вы можете использовать запросы, чтобы получить это:
import requests
from bs4 import BeautifulSoup
res = requests.get('https://filmovitica.com/pucanj-u-sljiviku-preko-reke-1978-domaci-film-gledaj-online/')
soup = bs(res.content, 'lxml')
print(soup.select_one('iframe[allowfullscreen]')['src'])
Вы можете определить, как она (ваша строка) создается в одном из тегов скрипта в uri (см. строку, выделенную в начале синим цветом:
Позже в этом js:
Это для основного клипа, который вы можете воспроизвести на странице?