嵌入youtube视频报废的链接

时间:2016-12-13 12:39:56

标签: python python-2.7 youtube web-crawler urllib2

我试图废弃一个网站:page I try to crawl。 我试图收集的数据是嵌入其页面的YouTube视频的链接。问题是,当我使用urllib2时,我无法执行js,因此链接不会出现在我的代码中:

response = OPENER.open("https://www.hopenglish.com/how-sugar-affects-the-brain?ref=category")
html_text = response.read() 
print html_text

我是否可以在不使用其他库废弃此网站的情况下检索此链接? (我的几乎所有抓取工具都已实现,我只需要嵌入视频的youtube链接)

2 个答案:

答案 0 :(得分:1)

在完成整个HTML响应后,找到了一个主题,它在内联的javascript中提供youtube视频ID,该内联javascript位于脚本标记内。

HTML响应的一部分(提供视频ID):

<script type="text/javascript" language="javascript">
                var vID = "lEXBxijQREo";
                var srt_name = "sugaraffectsbrain";
                var user_id = 0;
                var post_id = 8349;
                var share_link = 'https://www.hopenglish.com/how-sugar-affects-the-brain';
                var share_img_link = 'https://s3-ap-northeast-1.amazonaws.com/hopenglish/wp/wp-content/uploads/2014/10/how-sugar-affects-the-brain.jpg';
            </script>

从上面的HTML响应中,使用正则表达式检索vID值,如下所示:

import urllib2
import re

response = urllib2.urlopen("https://www.hopenglish.com/how-sugar-affects-the-brain?ref=category")
html_text = response.read() 
# print html_text

m = re.search('vID = "(.*?)"', html_text)
print m.group(0)

产生:

vID = "lEXBxijQREo"

您可以将vID值lEXBxijQREo附加到youtube.com域,如下所示:

https://www.youtube.com/watch?v=lEXBxijQREo

答案 1 :(得分:1)

在源代码中查找var vID = "lEXBxijQREo";