2015-01-16 5 views
0

웹 페이지에서 몇 개의 텍스트를 추출하고 싶습니다. StackOverFlow (다른 사이트와 마찬가지로)를 검색하여 적절한 방법을 찾았습니다. 나는 추출 할 HTML2TEXT, BeautifulSoup로, NLTK 및 기타 수동 방법을 사용하고 난 예를 들어 실패텍스트 추출 : 모든 방법을 사용했지만 고생했습니다.

  • HTML2TEXT 오프라인 (= 저장된 페이지)에서 작동하며 내가 온라인으로 할 필요가있다.
  • BS4가 유니 코드에서 제대로 작동하지 않습니다 (내 페이지가 UTF8 페르시아어 인코딩으로되어 있음). 텍스트를 추출하지 않습니다. 또한 HTML 태그 \ codes를 반환합니다. 렌더링 된 텍스트 만 필요합니다.
  • NLTK는 내 페르시아어 텍스트에서 작동하지 않습니다. urllib.request.urlopen으로 내 페이지를 열려고하는 중에도 몇 가지 오류가 발생합니다. 그래서 여러 가지 방법을 시도한 후에 너무 많이 붙어 있습니다.

내 대상 URL은 다음과 같습니다. http://vynylyn.yolasite.com/page2.php 태그 \ 코드가없는 페르시아 단락 만 추출하고 싶습니다.

(참고 : \ 파이썬 (34)는 내가 텍스트를 등 POS 태그, 워드 \ 문장 토큰 화를 수행하려면 다음 텍스트를 추출 할 승 이클립스 케플러를 사용합니다.) 얻을 수있는 내 옵션은 무엇

을 이게 효과가 있니?

+0

당신이 도서관은 그것의 자신의 네트워크 기능을 가지고 있지 않기 때문이다 "오프라인"작동이있는 경우. 하지만 HTML과 HTTP는 완전히 별개의 기술이기 때문에 괜찮습니다. 파이썬이 포함하는 것과 같은 네트워크 라이브러리를 사용하여 [인터넷에서 페이지를 다운로드] (http://stackoverflow.com/q/22676/33732) HTML 라이브러리를 사용하여 처리하십시오. –

답변

1

두 번째 옵션은 처음에 사용합니다. BeautifulSoup 4는 확실히 support unicode이어야합니다 (UTF-8은 전역 문자 인코딩이므로 페르시아어는 없습니다).

그리고 예, HTML 페이지이므로 태그를 받게됩니다. 고유 한 ID를 검색하거나 페이지의 HTML 구조를보십시오. 예를 들어, 요소 main을 찾은 다음 그 아래의 콘텐츠 요소를 찾거나 특정 페이지에서 div#I1_sys_txt을 사용할 수 있습니다. 요소가 있으면 get_text()으로 전화하면됩니다.

(현재 파이썬 3)이 시도 :

#!/usr/bin/env python3 
import requests 
from bs4 import BeautifulSoup 

content = requests.get('http://vynylyn.yolasite.com/page2.php') 
soup = BeautifulSoup(content.text) 

tag = soup.find('div', id='I1_sys_txt') 
print(tag.get_text() if tag else "<none found>") 
+0

감사합니다. Nick. 그 사건을 해결했습니다. 그것은 모든 순수한 본문에 불과한 꼬리표없이 페르시아 전체 텍스트를 돌려주었습니다. 지금 내가 투표를 할 수는 없으므로 평판이 15 개 이상이므로 인정 된 것으로 표시했습니다. – Vynylyn

+0

작동하려면 약간 수정해야합니다. \ Py34 : if tag : print (tag.get_text()) else : print ('None found') 당신의 대답은 OK입니다. 도와 주셔서 감사합니다! – Vynylyn

+0

다행이었습니다 (예, python2 구문이었습니다)! 그래서 네, 파이썬 3.x에서'tag (태그 else "")'print (tag.get_text – declension