2016-08-04 11 views
0

非常に長いHTMLファイルがありますが、変更できませんが、CSV出力を解析したいと思っています。次のコードが同じ行に何百回も繰り返しているとします。改行があるとこれがはるかに簡単になることがわかりますが、ファイルの作成方法を制御することはできません。また、このコードには改行がないことがわかります。完全に縮小されたコードを想像してください。私は休憩を追加したので、視覚化するのが簡単です。しかし、現実には存在しないので、これに対する実際の解決策は改行やスペースに頼ることができません。このことからPythonでHTMLタグをカンマ(CSV用)に置き換えるにはどうすればよいですか?

<tr id="link"> 
<td><a href="https://www.somewebsite.com" target="_target">Title</a></td> 
<td>Value 1</td><td style="width:20ch">Value 2</td> 
<td></td><td></td><td>Value 3</td> 
<td>Value 4</td><td>Value 5</td><td>Value 6</td> 
<td>Value 7</td><td>Value 8</td><td>Value 9</td></tr> 

私の所望の出力はhttps://www.somewebsite.com, Title, Value 1, Value 2, , , Value 3, ...(など)

基本的に、私はカンマでタグ内のすべての値を置き換えますが、URLを保持したいです。私はPythonでscan()、find()などの関数がCのような言語で使われていたように、ファイルポインタをグローバルに追跡しているようではないので、私が何をしていても、私は絶えずラインの始めを見ています。

+2

beautifulsoupを見ましたか? https://www.crummy.com/software/BeautifulSoup/ – jbndlr

+0

あなたのhtmlのすべてのテーブルですか? –

+0

いいえ、HTML内の表だけではありません。しかし、私はコードのテーブルにスキップすることができますが、私はまだそれを解析する必要があります。 – DaJoNel

答えて

0
from bs4 import BeautifulSoup 

html_doc = """ 
<tr id="link"> 
<td><a href="https://www.somewebsite.com" target="_target">Title</a></td> 
<td>Value 1</td><td style="width:20ch">Value 2</td> 
<td></td><td></td><td>Value 3</td> 
<td>Value 4</td><td>Value 5</td><td>Value 6</td> 
<td>Value 7</td><td>Value 8</td><td>Value 9</td></tr>""" 

for tr in BeautifulSoup(html_doc, 'html.parser').find_all('tr'): 
    row = [] 
    for td in tr.find_all('td'): 
     anchor = td.find('a') 
     row.extend([anchor['href'], anchor.text] if anchor else [td.text]) 
    print(', '.join(row)) 
関連する問題