上記のようなGUIでURLを入力して、message boxに表示し、必要な部分を確認後にTagを入力してその部分をCVSで出力できるようなGUIを作りたいと考えています。
Python
1import tkinter as tk 2import requests 3from bs4 import BeautifulSoup 4from functools import partial 5 6 7### この下に関数を書く ### 8 9def load_url(): 10 # Webページを取得して解析する 11 load_url = urlFld.get() 12 html = requests.get(load_url) 13 soup = BeautifulSoup(html.content, "html.parser") 14 15 # HTML全体を表示する 16 listappend = partial(msgList.insert, tk.END) 17 listappend(soup) 18 listappend('------------------------------------------------------') 19 20def tag_select(laod_url): 21 t1 = tagFld.get() 22 # タグを検索して表示する 23 listappend(soup.find(t1).text) # タグを検索して表示 24 25 26 27if __name__ == "__main__": 28 # Main Window 29 win = tk.Tk() 30 # Window Title 31 win.title("MediaInfo App") 32 # Window Size 33 win.geometry("500x550") 34 # Window Resizable 35 #win.resizable(0,0) 36 # Window Background 37 win.configure(bg="#52514F") 38 39### この下に描画内容を書く ### 40 #メインフレーム 41 mFrm = tk.Frame(win) 42 mFrm.configure(bg="#52514F") 43 mFrm.pack(padx=3, pady=3, fill="both", expand=1) 44 45 # HTML表示画面 46 msgList = tk.Listbox(mFrm) 47 msgList.configure(height=20, width=50) 48 msgList.pack(padx=10, pady=10) 49 50 # URL 入力ボタン用のフレーム 51 urlFrm = tk.LabelFrame(mFrm) 52 urlFrm.configure(text="Entry URL", fg="white", bg="#52514F", padx="20", pady="10") 53 urlFrm.pack(pady=5) 54 55 # URL ラベル 56 urlTxt = tk.Label(urlFrm) 57 urlTxt.configure(text="URL", fg="white", bg="#52514F", font=('Helvetica', 10)) 58 urlTxt.pack(side="left", padx=5) 59 60 # URL 入力 61 urlFld = tk.Entry(urlFrm) 62 urlFld.configure(fg="black", highlightbackground="#52514F") 63 urlFld.pack(side="left", padx=5) 64 65 # URL入力ボタン 66 urlBtn = tk.Button(urlFrm) 67 urlBtn.configure(text="Load URL", command=load_url) 68 urlBtn.pack(side="right", padx=5) 69 70 # HTML内 Tag 入力ボタン用のフレーム 71 tagFrm = tk.LabelFrame(mFrm) 72 tagFrm.configure(text="Entry Tag", fg="white", bg="#52514F", padx="20", pady="10") 73 tagFrm.pack(pady=5) 74 75 # HTML内 Tag ラベル 76 tagTxt = tk.Label(tagFrm) 77 tagTxt.configure(text="Tag", fg="white", bg="#52514F", font=('Helvetica', 10)) 78 tagTxt.pack(side="left", padx=5) 79 80 # HTML内 Tag 入力 81 tagFld = tk.Entry(tagFrm) 82 tagFld.configure(fg="black", highlightbackground="#52514F") 83 tagFld.pack(side="left", padx=5) 84 85 # HTML内 Tag入力ボタン 86 tagBtn = tk.Button(tagFrm) 87 tagBtn.configure(text="Select Tag", command=tag_select) 88 tagBtn.pack(side="right", padx=5) 89 90 91 92 # 描画 93 win.mainloop()
① HTMLの表示を改行させて表示したい。
②def load_urlで使ったsoup, listappendの値をdef tag_selectでも使えるようにしたい。
③スクレイピングしたいTagが複数ある時の為にタグ検索をして表示するコードはどのように書けば良いのか教えて欲しいです。
宜しく御願い致します。
何か問題があるのですか?
Undefined variable 'listappend'
Undefined variable 'soup'
Redefining name 'load_url' from outer scope (line 9)
Unused argument 'laod_url'
上記のエラーが発生しております。