BeautifulSoup html表刮 - 只会返回最后一行

时间:2016-10-16 13:23:20

标签: python beautifulsoup html-table

我正在使用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中,所以我必须错误地形成循环,但我不确定如何。

1 个答案:

答案 0 :(得分:2)

你的问题在这里:

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

您想要附加到列表或扩展它:

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

每次循环都会覆盖bbdata,这就是为什么它最终只能得到最终值。