BeautifulSoup:Scrape嵌入式href链接列表

时间:2017-02-11 08:10:30

标签: python html web-scraping beautifulsoup urllib2

我正在努力抓取有关最近热门视频的信息https://www.youtube.com/feed/trending。我将页面加载到BeautifulSoup中,但在尝试运行我需要解析的div列表时出错。

import urllib2
from bs4 import BeautifulSoup

url = 'https://www.youtube.com/feed/trending'
page = urllib2.urlopen(url)
soup = BeautifulSoup(page,'html.parser')

#narrow in to divs with relevant meta-data
videos = soup.find_all('div',class_='yt-lockup-content')
videos[50].div.a['href'] #checking one specific DIV
>>u'user/nameofchannel' #works

到目前为止,我已经返回了我需要的信息,但是当我尝试遍历所有div(此页面上写入时为70+)时,我收到与此方法返回的数据类型相关的错误。

for v in videos:
     videos[v].div.a['href']
>> TypeError: list indices must be integers, not Tag

如何查看'视频'中返回的div列表?并打印出符合' video [n] .div.a [' href']的值列表?

1 个答案:

答案 0 :(得分:1)

for v in range(len(videos)):
     videos[v].div.a['href']

您需要的是videos列表的索引,而不是其中的标记。

<强>更好的:

for index, value in enumerate(videos):
    videos[index].div.a['href']

好多了:

[v.div.a['href'] for v in videos]
对于此类任务,建议使用列表理解