2012-12-05 4 views

답변

0

감사합니다? 다른 HTML 코드를 파싱하고 있습니까? 아니면이 모든 것이 당신이 원하는 것입니까?

HTML 스크랩을 보려면 Beautiful Soup을보십시오.

프로젝트에 대해 더 많이 시도했거나 더 많은 것을 알았습니다.

+0

이 게시물에서 몇 가지 코드를 시도했습니다. http://stackoverflow.com/questions/5920623/how-to-parse-a-html-file-with-table-using-python. 하지만 특정 열 (모든 행이 아닌)의 모든 셀을 가져와야합니다. – user1564696

0

스팬이없는 경우 매우 쉽게 할 수 있습니다.

<table> 
    <tr><td>A</td><td>B</td><td>C</td></tr> 
    <tr><td>1</td><td>2</td><td>3</td></tr> 
</table> 

그것은 다음과 같이 렌더링 : 같은 테이블 상상이 테이블 코드를 일부 문자열 연산을 수행하는 경우

A B C 
1 2 3 

, 당신은 쉽게 두 가지 차원 데이터 구조를 채울 수있는에서 당신 열을 추출 할 수 있습니다. 가장 쉬운 방법은 정규 표현식을 사용하는 것입니다. 다음은 테이블 코드 (간단한 설명을 위해 태그 제외)를 사용하고 행 목록을 반환하는 작은 함수입니다. els가 상기 목록 (지금

[['A', 'B', 'C'], ['1', '2', '3']] 

그냥 압축 함수 풀었 전달 :이리스트를 반환 상기 예 테이블

import re 
    def htmlTableData(tblbody): 
    trs=re.findall(r'(?<=<tr>).*?(?=</tr>)', tblbody) 
    content=[re.findall(r'(?<=<td>).*?(?=</td>)', tr) for tr in trs] 
return content 

: 행의 셀리스트로서 반환) :

columns=zip(*els) 

그리고 열이 튜플 인 곳의 목록을 반환합니다. 위의 예에서는 [('A', '1'), ('B', '2'), ('C', '3')]을 반환합니다.

실제 스크래핑 프로그램에서는이 코드를 사용하지 않습니다. 이것은 어떻게 수행 할 수 있는지에 대한 간단한 예입니다. 현실 세계에서는 결코 이런 방식으로 해석 될 수없는 부적절한 코드를 가지고 있습니다. 화면 스크래핑을 원한다면 파서를 사용하여 테이블의 내용을 가져온 다음이 방법으로 압축하여 열을 가져옵니다.

관련 문제