2017-07-12 19 views
0

は、私は次のURLをこすりしたいと言う:このウェブサイトをスクラップできないのはなぜですか?

https://soundcloud.com/search/sounds?q=edm&filter.created_at=last_week

私は次のPythonコードがあります。

import requests 
from lxml import html 

urlToSearch = 'https://soundcloud.com/search/sounds?q=edm&filter.created_at=last_week' 
    page = requests.get(urlToSearch) 
    tree = html.fromstring(page.content) 
    print(tree.xpath('//*[@id="content"]/div/div/div[3]/div/div/div/ul/div/div/text()')) 

を、私は次のXPathでのテキストを印刷するときトラブルがあります

//*[@id="content"]/div/div/div[3]/div/div/div/ul/div/div 

何も表示されませんが、[]「Found 500+ tracks」がbそこに。何が間違っているのですか?

答えて

1

要求は動的コンテンツを生成しないという問題があります。

ページを右クリックしてページソースを表示すると、静的コンテンツには、動的コンテンツが読み込まれた後に表示されるコンテンツは含まれません。

ただし、(Chromeを使用して)オープン開発ツールを使用して、ネットワークとXHRをクリックします。とにかく掻きするよりも優れたAPIを使ってデータを取得できるようです。

+1

/soundcloudのAPIの詳細については、ガイドを参照してください。 – Silveris

+0

悲しいことに、サウンドクラウドはAPIアクセスの新しいアプリケーションを受け入れていません –

0

問題点は、現代のウェブサイトでは、JavaScript、CSSなどで読み込まれた後、ほぼすべてのWebページがかなり変更されるということです。DOMアップデートなどが行われる前に基本HTMLを取得し、ブラウザでページを開きます。 https://developers.soundcloud.com/docs/api読む

(主にテストの自動化のために使用される)セレンwebdriverをフレームワークを使用し、それはページをロードエミュレートし、JavaScriptを実行する等

Selenium Documentation for Python

関連する問題