내가 파이썬/BeautifulSoup로와 HTML 테이블을 구문 분석 찾고있다 ...BeautifulSoup로 태그 제거
이 파이썬에서 아무것도 코딩에서 내 첫 번째 시도, 그래서 그것의 가장 효율적인 아마입니다.
여기에 다른 게시물 기능을 부여했지만 (대부분 잘 작동 함) 몇 가지 문제가 있습니다.
내가 실행하고 코드는 여기에 있습니다 : 나는 strip_tags 함수를 실행하면
<td align="left">11/10</td>
<td>N ARMY</td>
<td>-7.5</td>
<td>NL</td>
<td><b>76-65</b></td>
<td><span style="color:green">W</span></td>
<td><span style="color:green">W</span></td>
<td></td>
<td class="cell4">50.0%</td>
<td class="cell4">76.9%</td>
<td class="cell4">37.5%</td>
<td class="cell5">37.1%</td>
<td class="cell5">90.0%</td>
<td class="cell5">29.4%</td>
는, 그것은 모든 태그 작동 :
이def strip_tags(html, invalid_tags):
bs2 = BeautifulSoup(str(html))
for tag in bs2.findAll(True):
if tag.name in invalid_tags:
s = ""
for c in tag.contents:
if not isinstance(c, NavigableString):
c = strip_tags(unicode(c), invalid_tags)
s += unicode(c)
tag.replaceWith(s)
return bs2
invalid_tags = ['td','b']
for row in bs.findAll('tr'):
col = row.findAll('td')
for index,item in enumerate(col):
t = item.findAll('a')
for ta in t:
ta.replaceWithChildren()
col[index] == item
for item in col:
print(strip_tags(item.string,invalid_tags).string
원시 데이터 테이블 (HTML)는 다음과 같습니다 두 번째 줄을 제외하고 ... 'None'이 출력으로 반환됩니다.
누군가가 왜 이런 일이 발생했는지에 대한 통찰력을 제공 할 수 있다면 크게 감사하겠습니다.
편집 : 누구나 빠른 답변을드립니다. 대신 'N ARMY'의 '없음'을 반환 곳
11/10 None -7.5 NL 76-65 W W None 50.0% 76.9% 37.5% 37.1% 90.0% 29.4%
문제는, 두 번째 줄 주위에있다 : 어쨌든, 여기에 내가 코드를 실행할 때 발생하는 것입니다. 그래서 예, 이상적으로는 태그 내에있는 텍스트 만 원합니다.
가 대신 어떤 출력을 찾고 :
이 출력을 준다? BeautifulSoup은 또한'.stripped_strings' iterable을 가지고 있는데, 당신이 원한다면 그 테이블의 텍스트 만 있으면된다. –
들여 쓰기가 보입니다. 'for 인덱스, 열거 형 (col) :'및'for item in col :'블록은 앞의'for' 루프의 일부분으로 들여 쓰기해야합니다. –
입력 HTML을 제공했지만 원하는 결과물을 혼동합니다. * 반환해야 할 내용을 게시 할 수 있습니까? –