как я могу получить значения в srcs, аналогичные приведенному ниже примеру? - PullRequest
0 голосов
/ 05 сентября 2018

Мой код для получения всех ссылок на странице:

from bs4 import BeautifulSoup

import requests
r  = requests.get("http://site-to.crawl")
data = r.text
soup = BeautifulSoup(data)

for link in soup.find_all('a'):
    print(link.get('href'))

Однако я хочу, например, содержимое обоих srcs как в:

"mov_bbb.mp4" and `"mov_bbb.ogg"`


<video id="video1" style="width:600px;max-width:100%;" controls="">
        <source src="mov_bbb.mp4" type="video/mp4">
        <source src="mov_bbb.ogg" type="video/ogg">
      </video>

как я могу добиться этого не только для этого примера, но и для всех видео-тегов видео позже, где я получу SRC.

другой пример:

<video controls="" src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4" poster="https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217" width="620">

</video>

что я хочу здесь https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4

Я бы хотел, чтобы код работал и для примеров примеров, и в основном для похожих. Когда есть теги video, я хочу, чтобы src, он мог быть непосредственно в том же <> или в его подпункте

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете получить теги в разобранном HTML. Тогда просто получите источник этих тегов.

Дайте попробовать:

 for i in range(len(soup.find_all('source'))):
     print(soup.find_all('source')[i]['src'])

*** Edit

Таким образом, мы можем сначала проверить, имеет ли атрибут src. если это не так, он проверит дочерние теги и напечатает их src.

for video in soup.find_all('video',attrs={'src':True}):
    print(video['src'])
for video in soup.find_all('video',attrs={'src':False}):
    for i in video.find_all('source'):
        print(i['src'])
...