2013-09-24 89 views
0

我想解析下面的頁面 http://www.lyricsnmusic.com/roxy-music/while-my-heart-is-still-beating-lyrics/26925936爲類似的歌曲列表。解析與beautifulsoup網頁獲取動態內容

類似歌曲的列表不在頁面源中,但在瀏覽器中使用「檢查元素」時出現。 我該怎麼做? 當前代碼:

url = 'http://www.lyricsnmusic.com/roxy-music/while-my-heart-is-still-beating-lyrics/26925936' 
request = urllib2.Request(url) 
lyricsPage = urllib2.urlopen(request).read() 
soup = BeautifulSoup(lyricsPage) 

的代碼生成的鏈接是:

for p in soup.find_all('p'): 
    s = p.find('a', { "class" : 'title' }).get('href') 

哪些方法可以做到這一點?

+0

該頁面使用[Last.fm API](http://www.last.fm/api)加載該數據。 –

+0

['application.js'腳本](http://www.lyricsnmusic.com/javascripts/application.js)沒有被縮小,我建議你去閱讀它,並找出如何使用相同的API代替搜刮第三方網站。尋找http://ws.audioscrobbler.com網址。 –

回答

0

這是通過一些Ajax調用可能處理的,所以它不會在源,

我想你會需要「監控網絡」,通過開發工具在瀏覽器中,尋找你感興趣的請求。

即來自該網頁的隨手拈請求URL:

http://ws.audioscrobbler.com/2.0/?api_key=73581584905631c5fc15720f03b0b9c8&format=json&callback=jQuery1703329798618797213_1380004055342&method=track.getSimilar&limit=10&artist=roxy%20music&track=while%20my%20heart%20is%20still%20beating&_=1380004055943

獲取/看到響應在瀏覽器中輸入上述網址,看到了響應的內容。

所以你需要在python中模擬請求,並且在得到響應之後,你必須解析響應以獲取有趣的細節。

+0

在Windows上,我建議使用Fiddler [1]來幫助逆向工程AJAX調用: [1]:http://fiddler2.com/features –

+0

您也可以使用[web driver](https:// code.google.com/p/selenium/)來控制實際的網頁瀏覽器,讓它爲您處理ajax調用。 – ogrim

+0

我能夠對Lastfm進行API調用,並直接獲取類似歌曲的列表並在原始網站上構建他們的網址。謝謝大家 – kevgathuku