前提・実現したいこと
htmlデータから特定の文字を抽出し、エクセルへ出力したいと考えています。
<p class="d-chat_timeline-name"> 名 前(発信者)1 </p>の欄をエクセルのA行に、 <li>日付と時間1</li>の欄をエクセルのB行に、 <div>名前1-1(受信者)<br />名前1-2(受信者)<br />名前1-3(受信者)<br />内容1</div>の欄をエクセルのC行に書き出したいのです。プログラミングを実行したところ、<div>名前1-1(受信者)<br />名前1-2(受信者)<br />名前1-3(受信者)<br />内容1</div>の欄だけしか書き出しませんでした。
エラーコードもなく、どのようにしたらいいのかわかりません。
アドバイスいただけないでしょうか。どうぞよろしくお願いいたします。
<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>発生している問題・エラーメッセージ
pythonでのエラーメッセージはありません。エクセル出力時にC行だけ出力される。
該当のソースコード
python
1# -*- coding: utf-8 -*- 2""" 3Spyderエディタ 4 5これは一時的なスクリプトファイルです 6""" 7 8import os, tkinter, tkinter.filedialog, tkinter.messagebox 9root = tkinter.Tk() 10root.withdraw() 11fTyp = [("","*.html")] 12file = tkinter.filedialog.askopenfilename(filetypes = fTyp) 13fd=open(file,"r",encoding="utf-8") 14 15res=fd.read() 16from bs4 import BeautifulSoup 17 18mojie=[] 19cur_pos=0 20while True : 21 target_tag = '<p class="d-chat_timeline-name">' 22 closing_tag = '</p>' 23 start_pos = res[cur_pos:].find(target_tag) 24 end_pos = res[cur_pos:].find(closing_tag) 25 if (start_pos == -1) or (end_pos == -1): 26 break 27 mojie.append(res[cur_pos + start_pos + len(target_tag) : cur_pos + end_pos]) 28 29 cur_pos = cur_pos + end_pos + len(closing_tag) 30 31 32import xlsxwriter 33wb = xlsxwriter.Workbook('C:/Users/XXXXXXXXXXX/Desktop/out.xlsx') 34ws1 = wb.add_worksheet('sheet') 35 36i=0 37for a in mojie: 38 i=i+1 39 ws1.write(i, 0, a) 40 41mojie=[] 42cur_pos=0 43while True : 44 target_tag = '<li>' 45 closing_tag = '</li>' 46 start_pos = res[cur_pos:].find(target_tag) 47 end_pos = res[cur_pos:].find(closing_tag) 48 if (start_pos == -1) or (end_pos == -1): 49 break 50 mojie.append(res[cur_pos + start_pos + len(target_tag) : cur_pos + end_pos]) 51 52 cur_pos = cur_pos + end_pos + len(closing_tag) 53 54 55import xlsxwriter 56wb = xlsxwriter.Workbook('C:/Users/XXXXXXXXXXX/Desktop/out.xlsx') 57ws2 = wb.add_worksheet('sheet') 58 59i=0 60for a in mojie: 61 i=i+1 62 ws2.write(i, 1, a) 63 64mojie=[] 65cur_pos=0 66while True : 67 target_tag = '<div>' 68 closing_tag = '</div>' 69 start_pos = res[cur_pos:].find(target_tag) 70 end_pos = res[cur_pos:].find(closing_tag) 71 if (start_pos == -1) or (end_pos == -1): 72 break 73 mojie.append(res[cur_pos + start_pos + len(target_tag) : cur_pos + end_pos]) 74 75 cur_pos = cur_pos + end_pos + len(closing_tag) 76 77 78import xlsxwriter 79wb = xlsxwriter.Workbook('C:/Users/XXXXXXXXXXX/Desktop/out.xlsx') 80ws3 = wb.add_worksheet('sheet') 81 82i=0 83for a in mojie: 84 i=i+1 85 ws3.write(i, 2, a) 86 87wb.close()
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/11 23:40