2016-10-16 3 views
0

私は次のようにBeautifulSoupを使用して、HTMLテーブルの簡単な擦り傷をしようとしています:BeautifulSoup HTMLテーブルスクレープ - 最後の行のみが返されます

import urllib 
import urllib.request 
from bs4 import BeautifulSoup 

def make_soup(url): 
    page = urllib.request.urlopen(url) 
    sdata = BeautifulSoup(page, 'html.parser') 
    return sdata 

url = 'http://www.satp.org/satporgtp/countries/pakistan/database/bombblast.htm' 
soup = make_soup(url) 

table = soup.findAll('table', attrs={'class':'pagraph1'}) 
table = table[0] 

trows = table.findAll('tr') 
bbdata_ = [] 
bbdata = [] 
for trow in trows: 
    bbdata_ = trow.findAll('td') 
    bbdata = [ele.text.strip() for ele in bbdata_] 

print(bbdata) 

しかし、私は、テーブルで、すなわち最後の行を抽出することができます

['Total*', '369', '1032+'] 

データのすべてがtrowsに含まれているので、私は間違って私のループを形成しなければならないが、私はどのように確認していません。

+0

一つのために注意: >>> bbdata =リスト(範囲(3)) >>> bbdata = bbdata.append(5) >>>すなわちbbdata 、bbdata.append(何でも) Noneを返します。 –

+0

おそらく**拡張**が必要です。 ** append **と同様に、** None **を返します。だからあなたは代入文で*使用しません。 ** bbdata.extend(何か他のもの)**を単独で書きます。 –

+0

新しい質問がある場合は、質問に回答からコードを追加しないでください。あなたのコメントのために –

答えて

2

あなたの問題はここにある:

bbdata = [ele.text.strip() for ele in bbdata_] 

あなたがリストに追加したり、それを拡張したい:

bbdata.append([ele.text.strip() for ele in bbdata_]) 

あなたはそれだけで終わる理由でループをbbdataするたびに上書きされています最終的な値で

+0

ありがとう。私がそれをしようとすると、属性エラー '' NoneType 'オブジェクトに属性' extend 'がありません。 – kathystehl

関連する問題