2017-02-11 19 views
1

最新の動向動画の情報をここでは削っています。https://www.youtube.com/feed/trending私はBeautifulSoupにページをロードしましたが、解析する必要があるdivのリストを実行しようとするとエラーが発生します。BeautifulSoup:埋め込みhrefリンクのスクラップリスト

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 

はここまで私は、私は必要な情報を返したが、私は(書き込みのように、このページに70+)をすべてのdivを介して実行しようとしたとき、私は、このメソッドが返すデータ型に関連したエラーが出ます。

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

は、どのように私は「動画」に返されるdiv要素のリストを実行し、一致する値のリスト印刷できる「ビデオを[n]は.div.a [」のhref ']?

答えて

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] 

使用リスト内包は、タスク

+0

おかげで、この種のために推奨されます!リストの理解形式は機能しましたが、最初はそうしませんでした。エラー: "TypeError: 'int'オブジェクトは反復可能ではありません" – James