Как пропустить соскоб с того же элемента с Beautifulsoup4 - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу очистить видео с веб-страницы, но на этой странице есть два тега iframe . Один для показа страницы Facebook, другой для вставки видео.Я просто хочу взять URL видео из этого .. Но когда я пытаюсь очистить это, я получил весь iframe ..

Вот так:

url_videos = requests.get(link_to_video)

video_link = BeautifulSoup(url_videos.text, 'html.parser')

video_on_iframe = video_link.find('iframe')

print(video_on_iframe)

и когда я пытаюсь запуститьКод выше я получил этот результат:

<iframe allow="encrypted-media" allowtransparency="true" frameborder="0" height="80" scrolling="no" src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2FAnimeindoFans%2F&amp;tabs&amp;width=280&amp;height=180&amp;small_header=true&amp;adapt_container_width=true&amp;hide_cover=true&amp;show_facepile=false&amp;appId=123434497681677" style="border:none;overflow:hidden" width="280"></iframe>
<iframe allow="encrypted-media" allowtransparency="true" frameborder="0" height="80" scrolling="no" src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2FAnimeindoFans%2F&amp;tabs&amp;width=280&amp;height=180&amp;small_header=true&amp;adapt_container_width=true&amp;hide_cover=true&amp;show_facepile=false&amp;appId=123434497681677" style="border:none;overflow:hidden" width="280"></iframe>
<iframe allow="encrypted-media" allowtransparency="true" frameborder="0" height="80" scrolling="no" src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2FAnimeindoFans%2F&amp;tabs&amp;width=280&amp;height=180&amp;small_header=true&amp;adapt_container_width=true&amp;hide_cover=true&amp;show_facepile=false&amp;appId=123434497681677" style="border:none;overflow:hidden" width="280"></iframe>
<iframe frameborder="0" height="380" scrolling="no" src="http://www.mp4upload.com/embed-q7xxgge1yu1c.html" type="text/html" width="640">
</iframe>
<iframe allow="encrypted-media" allowtransparency="true" frameborder="0" height="80" scrolling="no" src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2FAnimeindoFans%2F&amp;tabs&amp;width=280&amp;height=180&amp;small_header=true&amp;adapt_container_width=true&amp;hide_cover=true&amp;show_facepile=false&amp;appId=123434497681677" style="border:none;overflow:hidden" width="280"></iframe>
<iframe allow="encrypted-media" allowtransparency="true" frameborder="0" height="80" scrolling="no" src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2FAnimeindoFans%2F&amp;tabs&amp;width=280&amp;height=180&amp;small_header=true&amp;adapt_container_width=true&amp;hide_cover=true&amp;show_facepile=false&amp;appId=123434497681677" style="border:none;overflow:hidden" width="280"></iframe>

Мне не нужен этот Facebook iframe , мне просто нужен URL видео с другого iframe с атрибутом height="380" и width="280"

Когда я пытаюсь указать более подробную информацию в find () метод, подобный этому:

video_on_iframe = video_link.find('iframe', width=640, height=380)

Я получил это:

None
None
None
<iframe frameborder="0" height="380" scrolling="no" src="http://www.mp4upload.com/embed-q7xxgge1yu1c.html" type="text/html" width="640">
</iframe>
None
None

iframe элементов и None в остальных ..

Итак .. мой вопрос, как просто найти все значения iframe', width=640, height=380 и пропустить результат None вдругие ..

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Вы можете использовать find_all, чтобы найти все видео с такими размерами и атрибутом src.

video_on_iframe = [video["src"] for video in video_link.find_all('iframe', width=640, 
height=380, src=True)]
print(video_on_iframe)

[u 'http://www.mp4upload.com/embed-q7xxgge1yu1c.html'] [Завершено за 0,2 с]

0 голосов
/ 21 декабря 2018
video_on_frame = video_link.find_all('iframe', height = '380')## This means I wanna scrap iframe who has height value 380 . You can also use widht. 
link_array = []
for link in video_on_frame:  ## Your html has 1 iframe in video_on_frame format.

        get_iframe_url = link['src'] ## find iframe's src 



        try:
            link_array.append(get_iframe_url) ## add src into a array

        except:
             link_array.append('Error')

print (link_array) покажет ваш URL, что вы хотите

0 голосов
/ 19 декабря 2018

Также может потребоваться наличие атрибута src:

video_on_iframe = video_link.find('iframe', src=True)

Или в сочетании с проверками для width и height:

video_on_iframe = video_link.find('iframe', src=True, width=640, height=380)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...