前提・実現したいこと
Htmlデータからpython3.7で特定の文字を抽出しエクセルでリスト化したいのです。現在、下記の質問内容、途中で止まっています。
[質問内容]
Htmlデータからpython3.7で特定の文字を抽出しエクセルでリスト化したいのです。
今、以下のコードまで書きました。下記のコードを実行すると、最初の名前(発信者)1だけ読んで、次の名前(発信者)2を読んでもらえません。どうやったら次の名前を読んでもらえるのでしょうか。
<htmlデータ>
<div class="d-chat_timeline-post"> <p class="d-chat_timeline-name"> 名 前(発信者)1 </p> <ul class="d-chat_timeline-info"> <li>日付と時間1 </li> </ul> <div>名前1-1(受信者)<br /> 名前1-2(受信者)<br /> 名前1-3(受信者)<br /> 内容1</div> <div class="d-chat_timeline-post"> <p class="d-chat_timeline-name"> 名 前(発信者)2 </p> <ul class="d-chat_timeline-info"> <li>日付と時間2 </li> </ul> <div>名前2-1(受信者)<br /> 名前2-2(受信者)<br /> 名前2-3(受信者)<br /> 内容2</div> <div class="d-chat_timeline-post">以下、同じ<div class="d-chat_timeline-post">の塊が続く。
<エクセルのリスト形式は以下の形式です>
エクセルのA-1には名前(発信者)1、B-1には日付と時間1、C-1には名前1-1名前1-3、D-1には内容1、名前2-3、D-2には内容2……というリスト
A-2には名前(発信者)2、B-2には日付と時間2、C-2には名前2-1
<書いたコード>
#ファイルを読み込む
import os, tkinter, tkinter.filedialog, tkinter.messagebox
root = tkinter.Tk()
root.withdraw()
fTyp = [("","*.html")]
file = tkinter.filedialog.askopenfilename(filetypes = fTyp)
fd=open(file,"r",encoding="utf-8")
#htmlファイルを書き出す
res=fd.read()
from bs4 import BeautifulSoup
soup = BeautifulSoup(res,"html.parser")
#htmlファイルから取りだす
i=0
while True :
kaishi = res[i:].find('<p class="d-chat_timeline-name">')
i=res[kaishi:].find('<p class="d-chat_timeline-name">')
mojis = res[i:].find('<p class="d-chat_timeline-name">')
mojie = res[mojis:mojis+res[mojis:].find('</p>')]
print(mojie)
if i == -1 :
break
発生している問題・エラーメッセージ
上記のコードを実行すると、最初の名前(発信者)1だけ読んで、次の名前(発信者)2を読んでもらえません。
エラーメッセージ <p class="d-chat_timeline-name"> 発信者1 <p class="d-chat_timeline-name"> 発信者1 <p class="d-chat_timeline-name"> 発信者1 <p class="d-chat_timeline-name"> 発信者1 <p class="d-chat_timeline-name"> 発信者1 <p class="d-chat_timeline-name"> 発信者1 <p class="d-chat_timeline-name"> 発信者1 がずっと続きます。 ### 該当のソースコード python3.7 ソースコード ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/08 02:47