Как получить конкретные данные с помощью BeautifulSoup - PullRequest
0 голосов
/ 02 июля 2018

Я не уверен, как получить конкретный результат из этого:

<div class="videoPlayer">
    <div class="border-radius-player">
        <div id="allplayers" style="position:relative;width:100%;height:100%;overflow: hidden;">
            <div id="box">
                <div id="player_content" class="todo" style="text-align: center; display: block;">
                     <div id="player" class="jwplayer jew-reset jew-skin-seven jw-state-paused jw-flag-user-inactive" tabindex="0">
                         <div class="jw-media jw-reset">
                              <video class="jw-video jw-reset" x-webkit-playsinline="" src="https:EXAMPLE-URL-HERE" preload="metadata"></video>
                         </div">

Как бы я получил src в <video class="jw-video jw-reset" x-webkit-playsinline="" src="https:EXAMPLE-URL-HERE" preload="metadata"></video>

Это то, что я пробовал до сих пор:

import urllib.request
from bs4 import BeautifulSoup

url = "https://someurlhere"

a = urllib.request.Request(url, headers={'User-Agent' : "Cliqz"})
b = urllib.request.urlopen(a) # prevent "Permission denies"

soup = BeautifulSoup(b, 'html.parser')

for video_class in soup.select("div.videoPlayer"):
    print(video_class.text)

Что возвращает его части, но не до video class

1 Ответ

0 голосов
/ 02 июля 2018

Requests - это простой HTML-клиент, он не может выполнять JavaScript.

У вас есть еще три варианта, чтобы попробовать здесь, хотя!

  1. попробуйте просмотреть html-источник (b) и посмотреть, есть ли у какого-либо из javascript-скриптов на сайте нужные вам данные. обычно страница содержит URL-адрес (который, я полагаю, вы хотите очистить) в каком-то держателе (код JavaScript или объект json), который вы можете удалить.
  2. Попробуйте просмотреть XHR-запросы сайта и посмотреть, запрашивает ли какой-либо из запросов на получение видеоданных какие-либо внешние источники. В этом случае посмотрите, можете ли вы имитировать этот запрос, чтобы получить необходимые данные.
  3. (в крайнем случае) Для загрузки веб-сайта вам нужно использовать браузер phantomjs + selenium ( Link1 , Link2 ). Вы можете узнать больше о том, как использовать селен в этом посте SO: https://stackoverflow.com/a/26440563/3986395
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...