从源代码获取 youtube link 元素

Getting youtube link element from source code

我正在观察 http://www.bing.com/videos/search?q=kohli 并尝试查找视频网址。

锚标签包含 youtube link,但在我要提取的字典中。

redditFile = urllib2.urlopen("http://www.bing.com/videos?q="+urllib.quote_plus(word))
redditHtml = redditFile.read()
redditFile.close()
soup = BeautifulSoup(redditHtml)
productDivs = soup.findAll('div', attrs={'class' : 'dg_u'})
for div in productDivs:
    print div.find('a')['vrhm'] #This element contains youtube urls but print does not display it
    if div.find('div', {"class":"vthumb", 'smturl': True}) is not None:
        print div.find('div', {"class":"vthumb", 'smturl': True})['smturl'] #this gives link to micro video

如何从 a 标签和 vrhm 属性获取 YouTube link?

您可以使用 json.load 从 json 字符串加载字典。

for循环可以修改为

>>> productDivs = soup.findAll('div', attrs={'class' : 'dg_u'})
>>> for div in productDivs:
...     a_dict = json.loads( div.a['vrhm'] )
...     print a_dict['p']
https://www.youtube.com/watch?v=bWbrWI3PBss
https://www.youtube.com/watch?v=bWbrWI3PBss
https://www.youtube.com/watch?v=PbTx2Fjth-0
https://www.youtube.com/watch?v=pB1Kjx-eheY
..
..

它有什么作用?

  • div.a['vrhm'] 提取 div.

  • 的直接 a 子节点的 vrhm 属性
  • a_dict = json.loads( div.a['vrhm'] ) 加载 json 字符串并创建字典 a_dict.

  • print a_dict['p'] a_dict 是一个 python 字典。像往常一样使用它们。