2017-09-26 141 views
0

我是新来的蟒蛇,我想从我最喜欢的电台网站得到一些歌名,但无论我做什么,我不能进入div ui-view="main.header" class="ng-scope"得到歌曲名。Python的网上抓div class =“ng范围”

我的代码,我可以从TXT只是div的第一层次阅读,但不深:

<div id="audio-player" style="width: 0px; height: 0px"></div> 
<div id="fb-root"></div> 
<div ui-view="main.header"></div> 
<div ui-view="main.content"></div> 
<div ui-view="main.footer"></div> 

歌曲列表中的10秒的刷新率,被阻止,因为那刮那个区域? 我也试过div1 = soup.findAll(div),没有成功。

您可以在www.rockfm.ro

代码看到完整的网页代码解析:

<head></head> 
<body ng-class="bodyClass"> 
    <script src="https://www.youtube.com/iframe_api" data-remove="false"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" data-remove="false"></script> 
    <script src="http://thinkdigitalro.adocean.pl/files/js/ado.js" data-remove="false"></script> 
    <script data-remove="false"> 
    <script data-remove="false"> 
    <div id="audio-player" style="width: 0px; height: 0px"> 
    <div id="fb-root" class=" fb_reset"> 
    <!-- uiView: main.header --> 
    <div ui-view="main.header" class="ng-scope"> 
     <div id="topnav" ng-controller="HeaderCtrl" class="ng-scope">< 
      <div class="container top-stripe"> 
       </div> 
      <div class="container menu-expand" ng-class="{'show-expand':isMenuOpen}"> 
       <div class="col-md-3"> 
       <div class="col-md-6"> 
       <div class="col-md-3 menu-expand-latest-tracks"> 
        <div class="latest-tracks ng-isolate-scope" track-list="trackList.lista"> 
         <h4>Ultimele 10 piese</h4> 
          <ul> 
           <!-- ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">Steve Stevens - Top Gun Anthem</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">Boston - More Than A Feeling</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">Rammstein - Mein Hertz Brennt</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">Inxs - Never Tear Us Apart</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">Nirvana - Smells Like Teen Spirit</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">Rockfm - Stiri</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">Phoenix - Nunta</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">Survivor - Burning Heart</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">Holograf - Banii Vorbesc</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
           <li ng-repeat="track in trackList.lista" class="ng-binding ng-scope">It Rocks</li> 
           <!-- end ngRepeat: track in trackList.lista --> 
          </ul> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</body> 

这是我的代码:

import urllib 
from BeautifulSoup import * 

url = "www.rockfm.ro" 
html = urllib.urlopen('http://www.rockfm.ro').read() 

soup = BeautifulSoup(html) 

div1 = soup.findAll(True) 

#code to get into divs` classes 

for div2 in div1: 
    print("Level 1: "+ str(div2)) 
    with open('rock.txt', 'a') as file: 
     file.write("Level 1: " + str(div2) + "\n") 
    div3 = div2.findAll(True) 

    for div4 in div3: 
     print ("Level 2: "+ str(div4)) 
     with open('rock.txt', 'a') as file: 
      file.write("Level 2: " + str(div4) + "\n") 
     div5 = div4.findAll(True) 

     for div6 in div5: 
      print ("Level 3:" + str(div6)) 
      with open('rock.txt', 'a') as file: 
       file.write("Level 3: " + str(div6) + "\n") 
      div7 = div6.findAll(True) 

      for div8 in div7: 
       print ("Level 4:" + str(div8)) 
       with open('rock.txt', 'a') as file: 
        file.write("Level 3: " + str(div8) + "\n") 
       div9 = div8.findAll(True) 

       for div10 in div9: 
        print ("Level 4:" + str(div10)) 
        with open('rock.txt', 'a') as file: 
         file.write("Level 4: " + str(div10) + "\n") 

回答

0

试试这个:

songs = [] 
soup = BeautifulSoup(html.text, 'html.parser') 
li_list = soup.find.all('li') 
for li in li_list: 
    if li['ng-repeat'] == "track in trackList.lista": 
    songs.append(li.text)