2016-11-04 6 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          
) 

それは動作しますが、これは通常のexpresionとハードワークが必要なものを私に長いファイルを与える:例 -

私が最初にそれを魔女のバッチを実行しようHTMLのTAGコンテンツを読んでください。

私は、Python HTMLパーサが見つかりました:

from html.parser import HTMLParser 

をしかし、私は、オフラインファイルと特定のタグ(idは= "何か")のために使用するホット知りません。私はグーグルでグーグルを見ているけど、わかりやすい解決策は見つけられません。

お手伝いできますか?例とベスト:

  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

ありがとうございました。 しかし、私はlitte質問がある - 私はH2などのようなタグを追加することができます。しかし、場合によっては、正しいタグを見つけるために "id"や "class"などを使わなければならない場合、stacoverflow上で、それは1つの機能で一緒に組み合わせることはできません。わかりましたか? http://stackoverflow.com/questions/3276040/how-can-i-use-the-python-htmlparser-library-to-extract-data-from-a-specific-div – Firejs

+0

私は確信しています理解していますが、私はコードを編集しました。見て教えてください。 – Anton

関連する問題