문제

물론 수많은 파이썬 파서를 사용하여 HTML 페이지를 구문 분석 할 수 있지만 주어진 HTML 문서에서 의미있는 컨텐츠 (사이드 바, 내비게이션 등)를 추출 할 공개 구문 분석 스크립트가없는 것 같습니다. .

나는 그것이 div 및 p 요소를 수집 한 다음 최소한 양의 텍스트 내용을 확인하는 것과 같은 것 같지만, 확실한 구현에는 내가 생각하지 않은 많은 것들이 포함될 것이라고 확신합니다.

도움이 되었습니까?

해결책

시도해보십시오 아름다운 수프 파이썬을위한 라이브러리. HTML 파일에서 정보를 추출하는 매우 간단한 방법이 있습니다.

웹 페이지에서 데이터를 일반적으로 추출하려고하면 사람들이 비슷한 방식으로 페이지를 작성해야 할 것입니다. 그러나 동일한 정보를 전달해야 할 모든 콘 비나이션은 물론 동일하게 보이는 페이지를 전달하는 거의 무한한 방법이 있습니다.

추출하려는 특정 유형의 정보 나 다른 목표 목표가 있었습니까?

'div'및 'p'마커에서 컨텐츠를 추출하고 페이지의 모든 정보의 상대 크기를 비교할 수 있습니다. 문제는 사람들이 아마도 'Div's and 'P의 컬렉션에 정보를 그룹화한다는 것입니다 (또는 적어도 그들이 잘 형성된 HTML을 쓰는 경우).

어쩌면 정보가 어떻게 관련되는지에 대한 트리를 형성 한 경우 (노드가 'P'또는 'div 또는 무엇이든, 각 노드가 관련 텍스트를 포함 할 것입니다) 가장 작은'p '또는'를 식별하기 위해 어떤 종류의 분석을 수행 할 수 있습니다. div '그 정보의 대부분은 무엇입니까 ..?

편집하다 어쩌면 내가 제안한 트리 구조로 가져올 수 있다면 비슷한 포인트 시스템을 사용하여 스팸 암살자를 사용할 수 있습니다. 정보를 분류하려는 일부 규칙을 정의하십시오. 몇 가지 예 :

+1 points for every 100 words
+1 points for every child element that has > 100 words
-1 points if the section name contains the word 'nav'
-2 points if the section name contains the word 'advert'

더 관련성이 높은 섹션을 찾을 때 합산되는 저 점수 규칙이 많이 있다면 상당히 강력하고 강력한 기술로 발전 할 수 있다고 생각합니다.

edit2 가독성을 살펴보면, 내가 방금 제안한 일을 거의 정확하게하고있는 것 같습니다! 테이블을 더 잘 이해하고 이해하기 위해 개선 될 수 있습니까?

다른 팁

Templatemaker를 살펴보십시오. http://www.holovaty.com/writing/templatemaker/

Django의 창립자 중 한 명이 작성했습니다. 기본적으로 몇 가지 예제 HTML 파일을 공급하고 다른 비트 만 추출하는 데 사용할 수있는 "템플릿"을 생성합니다 (일반적으로 의미있는 컨텐츠).

다음은 다음과 같습니다 Google 코드 페이지:


# Import the Template class.
>>> from templatemaker import Template

# Create a Template instance.
>>> t = Template()

# Learn a Sample String.
>>> t.learn('<b>this and that</b>')

# Output the template so far, using the "!" character to mark holes.
# We've only learned a single string, so the template has no holes.
>>> t.as_text('!')
'<b>this and that</b>'

# Learn another string. The True return value means the template gained
# at least one hole.
>>> t.learn('<b>alex and sue</b>')
True

# Sure enough, the template now has some holes.
>>> t.as_text('!')
'<b>! and !</b>'

당신은 그것을 사용할 수 있습니다 보일러 파이프 웹 응용 프로그램 컨텐츠를 즉석에서 가져 와서 추출합니다.

(Google Appengine의 페이지에 HTTP GET 요청 만 발행하면 Python에만 국한되지 않습니다).

건배,

신자

의미가 있고 그렇지 않은 것은 페이지의 시맨틱에 달려 있습니다. 의미론이 엉망이라면, 코드는 의미있는 것을 "추측"하지 않습니다. 나는 당신이 주석에 링크 한 가독성을 사용하며, 많은 페이지에서 그것을 읽으려고 노력하는 것은 괜찮은 결과에 대해 이야기하지 않고 결과를 제공하지 않는다는 것을 알 수 있습니다.

누군가가 콘텐츠를 테이블에 넣으면 운명이 있습니다. PHPBB 포럼에서 가독성을 시도해 볼 수 있습니다.

당신이 그것을하고 싶다면, regexp와 함께 가십시오. <p></p>, 또는 dom을 구문 분석합니다.

거위 이 작업의 라이브러리 일뿐입니다. 그들의 readme를 인용하기 위해 :

거위는 다음 정보를 추출하려고합니다.

  • 기사의 본문
  • 기사의 주요 이미지
  • 기사에 포함 된 YouTube/Vimeo 영화
  • 메타 설명
  • 메타 태그
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top