如何使用美丽的汤找到特定的视频html标签?

时间:2013-12-04 01:35:12

标签: python beautifulsoup

有谁知道如何在python中使用beautifulsoup。

我有这个搜索引擎,列有不同的网址。

我想只获取包含视频嵌入网址的html标记。并获得链接。

例如

import BeautifulSoup

html = '''https://archive.org/details/20070519_detroit2'''
    #or this.. html = '''http://www.kumby.com/avatar-the-last-airbender-book-3-chapter-5/'''
    #or this... html = '''https://www.youtube.com/watch?v=fI3zBtE_S_k'''

soup = BeautifulSoup.BeautifulSoup(html)

接下来我该怎么做。获取视频,对象的html标签或视频的确切链接..

我需要把它放在我的iframe上。我将python集成到我的PHP。所以获取视频的链接并使用python输出它然后我将在我的iframe上回显它。

3 个答案:

答案 0 :(得分:4)

您需要获取网页的html而不仅仅是网址

使用内置的lib urllib,如下所示:

import urllib
from bs4 import BeautifulSoup as BS

url = '''https://archive.org/details/20070519_detroit2'''
#open and read page
page = urllib.urlopen(url)
html = page.read()
#create BeautifulSoup parse-able "soup"
soup = BS(html)
#get the src attribute from the video tag
video = soup.find("video").get("src")

对于您正在使用的网站,我注意到要获取嵌入链接只需更改details链接中的embed所以它看起来像这样:

https://archive.org/embed/20070519_detroit2

所以,如果你想对多个网址进行操作而不必解析,只需执行以下操作:

url = '''https://archive.org/details/20070519_detroit2'''
spl = url.split('/')
spl[3] = 'embed'
embed = "/".join(spl)
print embed

修改

要获取您在编辑中提供的其他链接的嵌入链接,您需要查看要解析的页面的html,直到找到链接然后获取标记然后属性

代表

'''http://www.kumby.com/avatar-the-last-airbender-book-3-chapter-5/'''

只是做

soup.find("iframe").get("src")

iframe因为该链接位于iframe标记和.get("src"),因为该链接是src属性

您可以尝试下一个,因为如果您希望将来能够这样做,您应该学习如何做到这一点:)

祝你好运!

答案 1 :(得分:1)

您无法解析网址。 BeautifulSoup用于解析 html页面。首先检索页面:

import urllib2

data = urllib2.ulropen("https://archive.org/details/20070519_detroit2")

html = data.read()

然后您可以使用find,然后使用src属性:

soup = BeautifulSoup(html)
video = soup.find('video')
src = video['src']

答案 2 :(得分:1)

如果您需要,可以在该页面中获取所有可下载的MP4文件。

import bs4, urllib2
url = 'https://archive.org/details/20070519_detroit2'
soup = bs4.BeautifulSoup(urllib2.urlopen(url))
links = [a['href'] for a in soup.find_all(lambda tag: tag.name == "a" and '.mp4' in tag['href'])]
print links

以下是输出:

['/download/20070519_detroit2/20070519_detroit_jungleearth.mp4',
'/download/20070519_detroit2/20070519_detroit_sweetkissofdeath.mp4', 
'/download/20070519_detroit2/20070519_detroit_goodman.mp4',
...
'/download/20070519_detroit2/20070519_detroit_wilson_512kb.mp4']

这些是相对链接,您可以将它们与域放在一起,然后获得绝对路径。