我正在编写python脚本,其中输入是视频网址,例如。 http://www.youtube.com/embed/YX6eoRTaoUc
并返回一些有关视频的信息(持续时间,嵌入代码和其他类似内容......)
问题是youtube返回的嵌入大小,其他视频服务(vimeo,dailymotion)对我不利。
例如
<iframe width="480" width="260" src="http://www.youtube.com/embed/YX6eoRTaoUc?feature=oembed" frameborder="0" allowfullscreen></iframe>
我需要480和270以外的其他值。我的方法是
player_html = player_html.replace('width="480"','width="656"')
player_html = player_html.replace('height="270"','height="517"')
但是,如果youtube或其他视频服务将发送除480以外的其他值,它将无法正常工作。尝试正则表达式,但对我来说非常难。
这个正则表达式匹配宽度参数,但下一步是什么?
\W|^width="\d+"\W|$
答案 0 :(得分:1)
正确的HTML解析器可以帮助您解决此问题。试试BeautifulSoup:
>>> from bs4 import BeautifulSoup
>>> html = '''<iframe width="480" width="260" src="http://www.youtube.com/embed/YX6eoRTaoUc?feature=oembed" frameborder="0" allowfullscreen></iframe>'''
>>> soup = BeautifulSoup(html)
>>> soup.iframe['width'] = 656
>>> soup.iframe['height'] = 517
>>> print print soup.prettify()
<html>
<body>
<iframe allowfullscreen="" frameborder="0" height="517" src="http://www.youtube.com/embed/YX6eoRTaoUc?feature=oembed" width="656">
</iframe>
</body>
</html>
>>> html = unicode(soup) # or str(soup) as required.
答案 1 :(得分:0)
我所做的是使用响应式div,没有指定宽度,高度
HTML:
<div class="responsive-video">
<iframe src="//www.youtube.com/embed/nYM3dqntqfQ?theme=light&autoplay=1&vq=hd720&rel=0&showinfo=0&modestbranding=1&autohide=1&wmode=transparent&iv_load_policy=3" frameborder="0" allowfullscreen=""></iframe>
</div>
CSS:
.responsive-video {
position: relative;
padding-bottom: 56.25%;
padding-top: 60px; overflow: hidden;
}