我正在努力抓取有关最近热门视频的信息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']的值列表?
答案 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]
对于此类任务,建议使用列表理解