有谁知道如何在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上回显它。
答案 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']
这些是相对链接,您可以将它们与域放在一起,然后获得绝对路径。