2016-12-24 3 views
2

でHTMLオブジェクトを選択:、私は列のバンド、国を含むテーブルを取得したいhttp://www.metal-archives.com/lists/私は現在のpythonとBS4でコードを訓練していて、このサイトからオブジェクトを選択するために、テストしていPythonとBS4

ジャンルと以下のコードのステータス:

import requests 
from bs4 import BeautifulSoup 
r = requests.get('http://www.metal-archives.com/lists/A') 
soup = BeautifulSoup(r.content, 'lxml') 

print([a.text for a in soup.select('td.sorting_1 a')]) 

何も起こらず、情報が表示されません。

私はすでに 'soup.find_all' eなどのさまざまな方法で試していました。Chromeでウェブサイトを調べると、 'bandListAlpha'テーブルがありますが、Bs4と解析すると何も起こりません。

私はそれが完全なページを持っていない「リクエスト」メソッドで何かになるべきだと思っていますが、私はこの情報を入手する方法についていくつかアドバイスが必要です。君たちありがとう。

答えて

0

ブラウザでページ上の目的のデータを取得するために使用されるメタデータアーカイブAJAX APIがあります。問題に近づくには、seleniumで実際のブラウザを起動するか、コード内でこれらの追加AJAXリクエストを模倣するなど、さまざまな方法があります。

しかし、あなたはまた、githubの上であり、すでに何か再利用することができます - metallumと呼ばれる「金属アーカイブ」のPython APIのラッパーがあるが、あなたはgithubのから直接インストールすることができます。ここでは

pip install git+https://github.com/lcharlick/python-metallum 

は使用例のコードですこのライブラリー:

In [2]: from metallum import band_search 

In [3]: s = band_search('metallica') 

In [4]: b = s[0].get() 

In [5]: print(b.name, b.country, b.status, b.genres) 
('Metallica', 'United States', 'Active', ['Thrash Metal (early)', 'Hard Rock/Heavy/Thrash Metal (later)']) 
+0

あなたはうまくいった。あなたの答えで私はコードそのものを学んだし、さらにpythonのAPIをgithubを通してインストールしました。現時点では、私はそのメタロームの変形について研究しています。ありがとう。 –

0

このページで使用するJavaScriptがデータをフェッチするために、実際のデータは、このURLにあります。

http://www.metal-archives.com/browse/ajax-letter/l/A/json/1?sEcho=1&iColumns=4&sColumns=&iDisplayStart=0&iDisplayLength=500&mDataProp_0=0&mDataProp_1=1&mDataProp_2=2&mDataProp_3=3&iSortCol_0=0&sSortDir_0=asc&iSortingCols=1&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=false&_=1482634713018 

このURLにリクエストして、jsonデータを元に戻すことができます。

+1

ありがとう!私は先週、HTML構造やその他のものを勉強する時間を費やしました。なぜなら、これは、このWeb廃棄における私の進化のために欠けているものです。 –

関連する問題