2016-10-16 5 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 (무엇이든) 없음을 반환합니다. –

+0

아마도 ** 확장 **을 원할 것입니다. ** append **와 마찬가지로 ** None **을 반환합니다. 따라서 할당 문에서 사용하지 마십시오. ** bbdata.extend (something 또는 other) **를 단독으로 작성하십시오. –

+0

새 질문이있는 경우 질문에 답변에서 코드를 추가하지 마십시오. 의견을 보내 주셔서 감사합니다. –

답변

2

귀하의 문제는 여기에 있습니다 : 그것은 단지 끝 왜 당신은 루프를 통해 bbdata 때마다 덮어 쓰는

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

을 :

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

당신은 목록에 추가하거나 확장 할 최종 가치.

+0

내가 그것을하려고 할 때, 그것은 나에게 속성 에러를 준다. ''NoneType '객체에는'extend '속성이 없다. – kathystehl