2016-11-04 2 views
-3

나는 정말 많은 오프라인 html 파일을 가지고 있으며 이름, 주소 등을 얻어야합니다. 그리고 CSV를 만드십시오. 내가 어떻게 더 나은 방법이있을 생각 ...HTML 오프라인 파일은 내용을 얻습니다

for /r %%i in (*) DO (
    findstr /o "name" %%i >> results.txt 
    ECHO ; >> results.txt 

    findstr /o "STREET" %%i >> results.txt 
    ECHO ; >> results.txt 

    etc 

ECHO xxxendlinexxx >> results.txt          
) 

그것은 작동하지만이 정규식 포함과 노력을 필요 나에게 긴 파일을 제공 : 예 -

내가 먼저 그것을 마녀 배치를 수행하려고 HTML의 TAG 콘텐츠를 읽으십시오.

는 파이썬 HTML 파서 발견

from html.parser import HTMLParser 

을하지만 오프라인 파일 및 특정 TAG (ID = "뭔가")에 사용하는 뜨거운 잘 모릅니다. 나는 인터넷 검색, tuts에 youtube보고,하지만 난 쉽게 이해할 수있는 솔루션을 찾으십시오.

도와 주시겠습니까? 예를 가장 잘 :

  1. 어떻게 파일을 열
  2. 저장 내용

도움을 주셔서 감사합니다 다른 파일에 특정 태그의 콘텐츠를 찾을 방법.

+2

을 필요한 데이터와 CSV를 어떻게 보이게하는지 예를 들어 보겠습니다. 어떻게하면 합리적인 솔루션을 만들 수 있을까요? – Compo

답변

-1

html.parser 대신 xml 모듈을 사용하여 xml 또는 html로 작업 할 수 있습니다. 쉽습니다.

나는 모듈 xml.etree를 사용하지만 다른 사람 (DOC : xml)이 있습니다 당신은 파일 (ET.parse(filename))에서 읽을 수 있지만 예에 내가 문자열을 사용

은.

xpath (즉, './/div[@id="something"]')을 사용하여 요소를 찾는 방법을 배워야합니다.

import xml.etree.ElementTree as ET 

html_string = '''<html> 
<body> 
<div id="something">Hello</div> 
<div id="something">World</div> 
</body> 
</html>''' 

#tree = ET.parse(filename) 
tree = ET.fromstring(html_string) 

divs = tree.findall('.//div[@id="something"]') 

# --- screen --- 

for d in divs: 
    print(d.text) 

# --- file --- 

with open('output.txt') as f: 
    for d in divs: 
     f.write(d.text + '\n') 
0

당신이 html.parser를 사용하려는 경우 (H1) 모든 메인 타이틀 얻을 구문 분석 생성하려면, 예를 가지고 : 당신이 예를 들어 HTML 파일을 제공하지 않는 경우

from html.parser import HTMLParser 

class MyHTMLParser(HTMLParser): 
    my_titles = [] 
    target_id = ['article-1-b', 'article-2-a'] 
    COPY_DATA = False 

    def handle_starttag(self, tag, attrs): 
     if tag == 'h1': 
      if 'id' in attrs and attrs['id'] in target_id: 
       self.COPY_DATA = True 

    def handle_data(self, data): 
     if self.COPY_DATA: 
      self.my_titles.append(data) 
      self.COPY_DATA = False 


parser = MyHTMLParser() 
with open('my_file.html') as f: 
    parser.feed(f.read()) 

print(parser.my_titles) 
+0

감사합니다.이 도움. 그러나 질문이 더 많습니다. H2와 같이 더 많은 태그를 추가 할 수 있습니다.하지만 올바른 태그를 찾기 위해 "id"또는 "class"등을 사용해야하는 경우가 있습니다. 여기 stacoverflow에서 일부 코드를 발견했습니다. 그것은 작동, 새싹 하나의 기능에서 함께 결합 할 수 없습니다. 당신이 이해 한? http://stackoverflow.com/questions/3276040/how-can-i-use-the-python-htmlparser-library-to-extract-data-from-a-specific-div – Firejs

+0

잘 모르겠습니다. 이해하지만 코드를 편집했습니다. 이봐 요. – Anton

관련 문제