Я хочу очистить видео с веб-страницы, но на этой странице есть два тега 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&tabs&width=280&height=180&small_header=true&adapt_container_width=true&hide_cover=true&show_facepile=false&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&tabs&width=280&height=180&small_header=true&adapt_container_width=true&hide_cover=true&show_facepile=false&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&tabs&width=280&height=180&small_header=true&adapt_container_width=true&hide_cover=true&show_facepile=false&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&tabs&width=280&height=180&small_header=true&adapt_container_width=true&hide_cover=true&show_facepile=false&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&tabs&width=280&height=180&small_header=true&adapt_container_width=true&hide_cover=true&show_facepile=false&appId=123434497681677" style="border:none;overflow:hidden" width="280"></iframe>
Мне не нужен этот Facebook iframe , мне просто нужен URL видео с другого iframe с атрибутом height="380" и width="280"
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 вдругие ..
iframe', width=640, height=380
None
Вы можете использовать find_all, чтобы найти все видео с такими размерами и атрибутом src.
find_all
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 с]
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, что вы хотите
Также может потребоваться наличие атрибута src:
src
video_on_iframe = video_link.find('iframe', src=True)
Или в сочетании с проверками для width и height:
width
height
video_on_iframe = video_link.find('iframe', src=True, width=640, height=380)