2017-09-09 2 views
0

나는 아름다운 스프를 사용하여 위키 피 디아에서 웹 페이지를 스크랩합니다. 웹 페이지에는 여러 개의 테이블이 있으며 하나의 특정 테이블에 액세스하려고합니다. 테이블의 클래스 이름은 'wikitable'이지만 동일한 클래스 이름을 가진 다른 테이블은 거의 없습니다. 아래 코드를 사용하면 웹 페이지의 첫 번째 표가 나타납니다. 하지만 두 번째 테이블이 필요합니다.아름다운 스프를 사용하여 Python으로 웹을 긁어내어 특정 테이블 찾기

my_table = str(soup.find("table","wikitable")) 

캡션을 사용하려고했지만 작동하지 않았습니다.

soup.find("caption", text="Demographics of student body").find_parent("table") 

나는 오류 "AttributeError를 'NoneType'객체 'find_parent'에는 속성이 없습니다"가지고 여기

HTML 코드가 테이블에 대해 내가 액세스를 시도하고 모습입니다.

<table style="text-align:center; float:left; font-size:85%; margin-right:2em;" class="wikitable"> 
<caption><i>Demographics of student body</i><sup id="cite_ref-Head_count_124-0" class="reference"><a href="#cite_note-Head_count-124">[124]</a></sup><sup id="cite_ref-125" class="reference"><a href="#cite_note-125">[125]</a></sup><sup id="cite_ref-126" class="reference"><a href="#cite_note-126">[126]</a></sup></caption> 

나는 어떤 지침을 주셔서 감사합니다. 나는 find 방법은 1 경기를 반환 파이썬 3

감사

답변

1

를 사용하고, 당신은 find_all을 사용하고 두번째 항목을 선택해야합니다.

my_table = soup.select('table.wikitable')[1] 

당신이 찾고있는 문자열이 '난'태그 내부에 '자막'에 속하기 때문에 AttributeError 예외가 발생, 그래서 find 반환 None :

my_table = soup.find_all("table", class_="wikitable")[1] 

당신은 CSS 선택기를 선호하는 경우. 'i'를 선택하면 제대로 작동합니다.

my_table = soup.find("i", string="Demographics of student body").find_parent("table") 
+0

정말 고마워요. [n]을 사용하여 테이블에 액세스 할 수 있다는 것을 알지 못했습니다. – rverma

관련 문제