2017-12-01 6 views
2

このサイトのアルバムや曲を美しいスープで傷つけたいと思っています。 3フィートの高さとライジング 歌: アルバム:私はこれを抽出したい要素間にhtmlテキストを抽出する

<div id="listAlbum"> 
    <a id="19215"></a> 
    <div class="album"> 
    "album: " 
    <b>"3 Feet High And Rising"</b> == $0 
    " (1989)" 
    </div> 
    <a href="https://www.azlyrics.com/lyrics/delasoul/intro.html" target="_blank">Intro 
    </a> 
    <br> 
    <a href="https://www.azlyrics.com/lyrics/delasoul/themagicnumber.html" target="_blank">The Magic Number</a> 
    <br> 
    <a href="https://www.azlyrics.com/lyrics/delasoul/changeinspeak.html" target="_blank">Change In Speak</a> 
    <br> 

:イントロ、マジックナンバー、変更には

を話し、私はこれでアルバムを得た:HTMLは次のようになります

allAlbums = soup.findAll('div', {"class" : "album"}) 
for a in allAlbums: 
    albumName = str(a.text)[7:] 
    print('album: ' + str(a)) 

私は曲を取得する方法を理解できません。私はこれらを試しました:

for s in soup(text = re.compile(r'target="_blank">')): 
    print(s.parent) 

アイデア?

答えて

0

これを試してください。私はそれはあなたに必要な出力を取り出すことを願っています:

from bs4 import BeautifulSoup 

html_content=''' 
    <div id="listAlbum"> 
    <a id="19215"> 
    </a> 
    <div class="album"> 
    "album: " 
    <b> 
    "3 Feet High And Rising" 
    </b> 
    == $0 
    " (1989)" 
    </div> 
    <a href="https://www.azlyrics.com/lyrics/delasoul/intro.html" target="_blank"> 
    Intro 
    </a> 
    <br/> 
    <a href="https://www.azlyrics.com/lyrics/delasoul/themagicnumber.html" target="_blank"> 
    The Magic Number 
    </a> 
    <br/> 
    <a href="https://www.azlyrics.com/lyrics/delasoul/changeinspeak.html" target="_blank"> 
    Change In Speak 
    </a> 
    <br/> 
    </div> 
''' 
soup = BeautifulSoup(html_content,"lxml") 
for item in soup.select("#listAlbum .album,#listAlbum a"): 
    print(item.text.strip()) 

それが生成するどのような:

"album: " 
"3 Feet High And Rising" 
== $0 
" (1989)" 

Intro 
The Magic Number 
Change In Speak 
+0

動作します。ありがとう。いくつかの質問:1)BeautifulSoup(html_content、 "lxml")の使い方を知りましたか? 2)soup.selectはどのようにここで働いていますか? 2番目の引数 "#listAlbum a"は "a href"の "a"を参照していますか? – pierce

+0

あなたの最初の質問は不明です。あなたの2番目の質問については、 'soup.select'はCSSセレクタのように動作します。このドキュメント[BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/#css-selectors)を参照してください。あなたの最後の質問については:いいえ、この '# 'はaを指していません。これは 'ID'のシンボルなので、' id = "listAlbum"を参照しています。これを必ず回答としてください。ありがとう。 – SIM

0

ここでは別のアプローチです:

## Prints every album 
albums = soup.find_all(class_="album") 
for album in albums: 
    print(album.get_text()) 

## Prints every song 
songs = soup.find_all('a', target="_blank") 
for song in songs: 
    print(song.get_text()) 
関連する問題