浣跨敤python鍋氫竴涓埇铏獹UI绋嬪簭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浣跨敤python鍋氫竴涓埇铏獹UI绋嬪簭相关的知识,希望对你有一定的参考价值。

鏍囩锛?a href='http://www.mamicode.com/so/1/resizable' title='resizable'>resizable   鍒涘缓   com   class   pad   end   height   绯荤粺   閮ㄤ欢   

 鏁翠綋鎬濊矾鍜屼箣鍓嶇殑涓€绡囧崥瀹?strong>鐖櫕璞嗙摚缇庡コ涓€鑷达紝杩欐鍔犲叆浜嗗浘鐗囧垎绫伙紝鍚屾椂鍒╃敤tkinter妯″潡鍋氭垚GUI绋嬪簭

鏁堟灉濡備笅锛?/p>

鎶€鏈浘鐗? src=

鏁翠綋浠g爜濡備笅锛?/p>

  1 # -*- coding:utf-8 -*-
  2 
  3 import requests
  4 from requests.exceptions import RequestException
  5 import tkinter as tk
  6 from tkinter import ttk
  7 from bs4 import BeautifulSoup
  8 import bs4
  9 from tkinter import *
 10 from tkinter.filedialog import askdirectory
 11 import os
 12 
 13 class DB():
 14     def __init__(self):
 15         self.window = tk.Tk()  #鍒涘缓window绐楀彛
 16         self.window.title("Crawler Pics")  # 瀹氫箟绐楀彛鍚嶇О
 17         # self.window.resizable(0,0)  # 绂佹璋冩暣绐楀彛澶у皬
 18         self.menu = ttk.Combobox(self.window,width=6)
 19         self.path = StringVar()
 20         self.lab1 = tk.Label(self.window, text = "鐩爣璺緞:")
 21         self.lab2 = tk.Label(self.window, text="閫夋嫨鍒嗙被:")
 22         self.lab3 = tk.Label(self.window, text="鐖彇椤垫暟:")
 23         self.page = tk.Entry(self.window, width=5)
 24         self.input = tk.Entry(self.window, textvariable = self.path, width=80)  # 鍒涘缓涓€涓緭鍏ユ,鏄剧ず鍥剧墖瀛樻斁璺緞
 25         self.info = tk.Text(self.window, height=20)   # 鍒涘缓涓€涓枃鏈睍绀烘锛屽苟璁剧疆灏哄
 26 
 27         self.menu[鈥?/span>value鈥?/span>] = (鈥?/span>澶ц兏濡?/span>鈥?/span>,鈥?/span>灏忕繕鑷€鈥?/span>, 鈥?/span>榛戜笣琚?/span>鈥?/span>, 鈥?/span>缇庤吙鎺?/span>鈥?/span>, 鈥?/span>鏈夐鍊?/span>鈥?/span>,鈥?/span>澶ф潅鐑?/span>鈥?/span>)
 28         self.menu.current(0)
 29 
 30         # 娣诲姞涓€涓寜閽紝鐢ㄤ簬閫夋嫨鍥剧墖淇濆瓨璺緞
 31         self.t_button = tk.Button(self.window, text=鈥?/span>閫夋嫨璺緞鈥?/span>, relief=tk.RAISED, width=8, height=1, command=self.select_Path)
 32         # 娣诲姞涓€涓寜閽紝鐢ㄤ簬瑙﹀彂鐖彇鍔熻兘
 33         self.t_button1 = tk.Button(self.window, text=鈥?/span>鐖彇鈥?/span>, relief=tk.RAISED, width=8, height=1,command=self.download)
 34         # 娣诲姞涓€涓寜閽紝鐢ㄤ簬瑙﹀彂娓呯┖杈撳嚭妗嗗姛鑳?/span>
 35         self.c_button2 = tk.Button(self.window, text=鈥?/span>娓呯┖杈撳嚭鈥?/span>, relief=tk.RAISED,width=8, height=1, command=self.cle)
 36 
 37     def gui_arrang(self):
 38         """瀹屾垚椤甸潰鍏冪礌甯冨眬锛岃缃悇閮ㄤ欢鐨勪綅缃?/span>"""
 39         self.lab1.grid(row=0,column=0)
 40         self.lab2.grid(row=1, column=0)
 41         self.menu.grid(row=1, column=1,sticky=W)
 42         self.lab3.grid(row=2, column=0,padx=5,pady=5,sticky=tk.W)
 43         self.page.grid(row=2, column=1,sticky=W)
 44         self.input.grid(row=0,column=1)
 45         self.info.grid(row=3,rowspan=5,column=0,columnspan=3,padx=15,pady=15)
 46         self.t_button.grid(row=0,column=2,padx=5,pady=5,sticky=tk.W)
 47         self.t_button1.grid(row=1,column=2)
 48         self.c_button2.grid(row=0,column=3,padx=5,pady=5,sticky=tk.W)
 49 
 50     def get_cid(self):
 51         category = 
 52             鈥?/span>DX鈥?/span>: 2,
 53             鈥?/span>XQT鈥?/span>: 6,
 54             鈥?/span>HSW鈥?/span>: 7,
 55             鈥?/span>MTK鈥?/span>: 3,
 56             鈥?/span>YYZ鈥?/span>: 4,
 57             鈥?/span>DZH鈥?/span>: 5
 58         
 59         cid = None
 60         if self.menu.get() == "澶ц兏濡?/span>":
 61             cid = category["DX"]
 62         elif self.menu.get() == "灏忕繕鑷€":
 63             cid = category["XQT"]
 64         elif self.menu.get() == "榛戜笣琚?/span>":
 65             cid = category["HSW"]
 66         elif self.menu.get() == "缇庤吙鎺?/span>":
 67             cid = category["MTK"]
 68         elif self.menu.get() == "鏈夐鍊?/span>":
 69             cid = category["YYZ"]
 70         elif self.menu.get() == "澶ф潅鐑?/span>":
 71             cid = category["DZH"]
 72         return cid
 73 
 74     def select_Path(self):
 75         """閫夊彇鏈湴璺緞"""
 76         path_ = askdirectory()
 77         self.path.set(path_)
 78 
 79     def get_html(self, url, header=None):
 80         """璇锋眰鍒濆url"""
 81         response = requests.get(url, headers=header)
 82         try:
 83             if response.status_code == 200:
 84                 # print(response.status_code)
 85                 # print(response.text)
 86                 return response.text
 87             return None
 88         except RequestException:
 89             print("璇锋眰澶辫触")
 90             return None
 91 
 92     def parse_html(self, html, list_data):
 93         """鎻愬彇img鐨勫悕绉板拰鍥剧墖url锛屽苟灏嗗悕绉板拰鍥剧墖鍦板潃浠ュ瓧鍏稿舰寮忚繑鍥?/span>"""
 94         soup = BeautifulSoup(html, 鈥?/span>html.parser鈥?/span>)
 95         img = soup.find_all(鈥?/span>img鈥?/span>)
 96         for t in img:
 97             if isinstance(t, bs4.element.Tag):
 98                 # print(t)
 99                 name = t.get(鈥?/span>alt鈥?/span>)
100                 img_src = t.get(鈥?/span>src鈥?/span>)
101                 list_data.append([name, img_src])
102         dict_data = dict(list_data)
103         return dict_data
104 
105     def get_image_content(self, url):
106         """璇锋眰鍥剧墖url锛岃繑鍥炰簩杩涘埗鍐呭"""
107         print("姝e湪涓嬭浇", url)
108         self.info.insert(鈥?/span>end鈥?/span>,"姝e湪涓嬭浇:"+url+鈥?/span>\n鈥?/span>)
109         try:
110             r = requests.get(url)
111             if r.status_code == 200:
112                 return r.content
113             return None
114         except RequestException:
115             return None
116 
117     def download(self):
118         base_url = 鈥?/span>https://www.dbmeinv.com/index.htm?鈥?/span>
119         for i in range(1, int(self.page.get())+1):
120             url = base_url + 鈥?/span>cid=鈥?/span> + str(self.get_cid()) + 鈥?/span>&鈥?/span> + 鈥?/span>pager_offset=鈥?/span> + str(i)
121             # print(url)
122             header = 
123                 鈥?/span>Accept鈥?/span>: 鈥?/span>text/html,application/xhtml+xml,application/xml;q = 0.9, image/webp,image/apng,*/*;q=鈥?/span>
124                           鈥?/span>0.8鈥?/span>,
125                 鈥?/span>Accept-Encoding鈥?/span>: 鈥?/span>gzip,deflate,br鈥?/span>,
126                 鈥?/span>Accept-Language鈥?/span>: 鈥?/span>zh-CN,zh;q=0.9,en;q=0.8鈥?/span>,
127                 鈥?/span>Cache-Control鈥?/span>: 鈥?/span>max-age=0鈥?/span>,
128                 鈥?/span>Connection鈥?/span>: 鈥?/span>keep-alive鈥?/span>,
129                 鈥?/span>Host鈥?/span>: 鈥?/span>www.dbmeinv.com鈥?/span>,
130                 鈥?/span>Upgrade-Insecure-Requests鈥?/span>: 鈥?/span>1鈥?/span>,
131                 鈥?/span>User-Agent鈥?/span>: 鈥?/span>Mozilla/5.0(WindowsNT6.1;Win64;x64) AppleWebKit/537.36(KHTML, likeGecko) Chrome/鈥?/span>
132                               鈥?/span>70.0.3538.102Safari/537.36 鈥?/span>
133             
134             list_data = []
135             html = self.get_html(url)
136             # print(html)
137             dictdata = self.parse_html(html, list_data)
138 
139 
140             root_dir = self.input.get()
141             case_list = ["澶ц兏濡?/span>", "灏忕繕鑷€", "榛戜笣琚?/span>", "缇庤吙鎺?/span>", "鏈夐鍊?/span>", "澶ф潅鐑?/span>"]
142             for t in case_list:
143                 if not os.path.exists(root_dir + 鈥?/span>/pics鈥?/span>):
144                     os.makedirs(root_dir + 鈥?/span>/pics鈥?/span>)
145                 if not os.path.exists(root_dir + 鈥?/span>/pics/鈥?/span> + str(t)):
146                     os.makedirs(root_dir + 鈥?/span>/pics/鈥?/span> + str(t))
147 
148 
149             if self.menu.get() == "澶ц兏濡?/span>":
150                 save_path = root_dir + 鈥?/span>/pics/鈥?/span> + 鈥?/span>澶ц兏濡?/span>鈥?/span>
151                 for t in dictdata.items():
152                     try:
153                         # file_path = 鈥榹0/1.2鈥?format(save_path, t[1], 鈥榡pg鈥?
154                         file_path = save_path + 鈥?/span>/鈥?/span> + t[0] + 鈥?/span>q鈥?/span> + 鈥?/span>.jpg鈥?/span>
155                         if not os.path.exists(file_path):  # 鍒ゆ柇鏄惁瀛樺湪鏂囦欢锛屼笉瀛樺湪鍒欑埇鍙?/span>
156                             with open(file_path, 鈥?/span>wb鈥?/span>) as f:
157                                 f.write(self.get_image_content(t[1]))
158                                 f.close()
159                                 print(鈥?/span>鏂囦欢淇濆瓨鎴愬姛鈥?/span>)
160                     except FileNotFoundError:
161                         continue
162 
163             elif self.menu.get() == "灏忕繕鑷€":
164                 save_path = root_dir + 鈥?/span>/pics/鈥?/span> + 鈥?/span>灏忕繕鑷€鈥?/span>
165                 for t in dictdata.items():
166                     try:
167                         # file_path = 鈥榹0/1.2鈥?format(save_path, t[1], 鈥榡pg鈥?
168                         file_path = save_path + 鈥?/span>/鈥?/span> + t[0] + 鈥?/span>q鈥?/span> + 鈥?/span>.jpg鈥?/span>
169                         if not os.path.exists(file_path):  # 鍒ゆ柇鏄惁瀛樺湪鏂囦欢锛屼笉瀛樺湪鍒欑埇鍙?/span>
170                             with open(file_path, 鈥?/span>wb鈥?/span>) as f:
171                                 f.write(self.get_image_content(t[1]))
172                                 f.close()
173                                 print(鈥?/span>鏂囦欢淇濆瓨鎴愬姛鈥?/span>)
174                     except FileNotFoundError:
175                         continue
176 
177             elif self.menu.get() == "榛戜笣琚?/span>":
178                 save_path = root_dir + 鈥?/span>/pics/鈥?/span> + 鈥?/span>榛戜笣琚?/span>鈥?/span>
179                 for t in dictdata.items():
180                     try:
181                         # file_path = 鈥榹0/1.2鈥?format(save_path, t[1], 鈥榡pg鈥?
182                         file_path = save_path + 鈥?/span>/鈥?/span> + t[0] + 鈥?/span>q鈥?/span> + 鈥?/span>.jpg鈥?/span>
183                         if not os.path.exists(file_path):  # 鍒ゆ柇鏄惁瀛樺湪鏂囦欢锛屼笉瀛樺湪鍒欑埇鍙?/span>
184                             with open(file_path, 鈥?/span>wb鈥?/span>) as f:
185                                 f.write(self.get_image_content(t[1]))
186                                 f.close()
187                                 print(鈥?/span>鏂囦欢淇濆瓨鎴愬姛鈥?/span>)
188                     except FileNotFoundError:
189                         continue
190 
191             elif self.menu.get() == "缇庤吙鎺?/span>":
192                 save_path = root_dir + 鈥?/span>/pics/鈥?/span> + 鈥?/span>缇庤吙鎺?/span>鈥?/span>
193                 for t in dictdata.items():
194                     try:
195                         # file_path = 鈥榹0/1.2鈥?format(save_path, t[1], 鈥榡pg鈥?
196                         file_path = save_path + 鈥?/span>/鈥?/span> + t[0] + 鈥?/span>q鈥?/span> + 鈥?/span>.jpg鈥?/span>
197                         if not os.path.exists(file_path):  # 鍒ゆ柇鏄惁瀛樺湪鏂囦欢锛屼笉瀛樺湪鍒欑埇鍙?/span>
198                             with open(file_path, 鈥?/span>wb鈥?/span>) as f:
199                                 f.write(self.get_image_content(t[1]))
200                                 f.close()
201                                 print(鈥?/span>鏂囦欢淇濆瓨鎴愬姛鈥?/span>)
202                     except FileNotFoundError:
203                         continue
204 
205             elif self.menu.get() == "鏈夐鍊?/span>":
206                 save_path = root_dir + 鈥?/span>/pics/鈥?/span> + 鈥?/span>鏈夐鍊?/span>鈥?/span>
207                 for t in dictdata.items():
208                     try:
209                         # file_path = 鈥榹0/1.2鈥?format(save_path, t[1], 鈥榡pg鈥?
210                         file_path = save_path + 鈥?/span>/鈥?/span> + t[0] + 鈥?/span>q鈥?/span> + 鈥?/span>.jpg鈥?/span>
211                         if not os.path.exists(file_path):  # 鍒ゆ柇鏄惁瀛樺湪鏂囦欢锛屼笉瀛樺湪鍒欑埇鍙?/span>
212                             with open(file_path, 鈥?/span>wb鈥?/span>) as f:
213                                 f.write(self.get_image_content(t[1]))
214                                 f.close()
215                                 print(鈥?/span>鏂囦欢淇濆瓨鎴愬姛鈥?/span>)
216                     except OSError:
217                         continue
218 
219             elif self.menu.get() == "澶ф潅鐑?/span>":
220                 save_path = root_dir + 鈥?/span>/pics/鈥?/span> + 鈥?/span>澶ф潅鐑?/span>鈥?/span>
221                 for t in dictdata.items():
222                     try:
223                         # file_path = 鈥榹0/1.2鈥?format(save_path, t[1], 鈥榡pg鈥?
224                         file_path = save_path + 鈥?/span>/鈥?/span> + t[0] + 鈥?/span>q鈥?/span> + 鈥?/span>.jpg鈥?/span>
225                         if not os.path.exists(file_path):  # 鍒ゆ柇鏄惁瀛樺湪鏂囦欢锛屼笉瀛樺湪鍒欑埇鍙?/span>
226                             with open(file_path, 鈥?/span>wb鈥?/span>) as f:
227                                 f.write(self.get_image_content(t[1]))
228                                 f.close()
229                                 print(鈥?/span>鏂囦欢淇濆瓨鎴愬姛鈥?/span>)
230                     except FileNotFoundError:
231                         continue
232 
233     def cle(self):
234         """瀹氫箟涓€涓嚱鏁帮紝鐢ㄤ簬娓呯┖杈撳嚭妗嗙殑鍐呭"""
235         self.info.delete(1.0,"end")  # 浠庣涓€琛屾竻闄ゅ埌鏈€鍚庝竴琛?/span>
236 
237 
238 def main():
239     t = DB()
240     t.gui_arrang()
241     tk.mainloop()
242 
243 if __name__ == 鈥?/span>__main__鈥?/span>:
244     main()

鍏抽敭鐐癸細

1.濡備綍浣跨敤tkinter璋冪敤绯荤粺璺緞

2.鏋勯€爑rl锛屽弬鏁板寲鍥剧墖鍒嗙被銆佹姄鍙栭〉鏁?/p>

3.浣跨敤tkinter鑾峰彇杈撳叆鍙傛暟浼犵粰鎵ц浠g爜


 涓嬮潰鏄粌涔犵殑鏃跺€欏啓鐨勭畝闄嬬増锛屼笉鍖呭惈tkinter锛屼富瑕佹槸鐞嗘竻鎬濊矾锛?/p>

  1 import re
  2 import requests
  3 import os
  4 from requests.exceptions import RequestException
  5 
  6 case = str(input("璇疯緭鍏ヤ綘瑕佷笅杞界殑鍥剧墖鍒嗙被锛?/span>"))
  7 category = 
  8    鈥?/span>DX鈥?/span>: 2,
  9    鈥?/span>XQT鈥?/span>: 6,
 10    鈥?/span>HSW鈥?/span>: 7,
 11    鈥?/span>MTK鈥?/span>: 3,
 12    鈥?/span>YYZ鈥?/span>: 4,
 13    鈥?/span>DZH鈥?/span>: 5
 14 
 15 def get_cid():
 16     cid = None
 17     if case == "澶ц兏濡?/span>":
 18         cid = category["DX"]
 19     elif case == "灏忕繕鑷€":
 20         cid = category["XQT"]
 21     elif case == "榛戜笣琚?/span>":
 22         cid = category["HSW"]
 23     elif case == "缇庤吙鎺?/span>":
 24         cid = category["MTK"]
 25     elif case == "鏈夐鍊?/span>":
 26         cid = category["YYZ"]
 27     elif case == "澶ф潅鐑?/span>":
 28         cid = category["DZH"]
 29     return cid
 30 
 31 
 32 
 33 base_url = 鈥?/span>https://www.dbmeinv.com/index.htm?鈥?/span>
 34 url = base_url + 鈥?/span>cid=鈥?/span> + str(get_cid())
 35 r = requests.get(url)
 36 # print(r.status_code)
 37 html = r.text
 38 # print(r.text)
 39 # print(html)
 40 
 41 name_pattern = re.compile(r鈥?/span><img class="height_min".*?title="(.*?)"鈥?/span>, re.S)
 42 src_pattern = re.compile(r鈥?/span><img class="height_min".*?src="(.*?.jpg)"鈥?/span>, re.S)
 43 
 44 name = name_pattern.findall(html)  # 鎻愬彇title
 45 src = src_pattern.findall(html)  # 鎻愬彇src
 46 data = [name,src]
 47 # print(name)
 48 # print(src)
 49 d=[]
 50 for i in range(len(name)):
 51     d.append([name[i], src[i]])
 52 
 53 dictdata = dict(d)
 54 # for i in dictdata.items():
 55 #     print(i)
 56 
 57 def get_content(url):
 58     try:
 59         r = requests.get(url)
 60         if r.status_code == 200:
 61             return r.content
 62         return None
 63     except RequestException:
 64         return None
 65 
 66 root_dir = os.path.dirname(os.path.abspath(鈥?/span>.鈥?/span>))
 67 
 68 case_list = ["澶ц兏濡?/span>","灏忕繕鑷€","榛戜笣琚?/span>","缇庤吙鎺?/span>","鏈夐鍊?/span>","澶ф潅鐑?/span>"]
 69 for t in case_list:
 70     if not os.path.exists(root_dir+鈥?/span>/pics鈥?/span>):
 71         os.makedirs(root_dir+鈥?/span>/pics鈥?/span>)
 72     if not os.path.exists(root_dir+鈥?/span>/pics/鈥?/span>+str(t)):
 73         os.makedirs(root_dir+鈥?/span>/pics/鈥?/span>+str(t))
 74 
 75 def Type(type):
 76     save_path = root_dir + 鈥?/span>/pics/鈥?/span> + str(type)
 77     # print(save_path)
 78     for t in dictdata.items():
 79         try:
 80             #file_path = 鈥榹0/1.2鈥?format(save_path, t[1], 鈥榡pg鈥?
 81             file_path = save_path + 鈥?/span>/鈥?/span> + t[0]+ 鈥?/span>q鈥?/span> +鈥?/span>.jpg鈥?/span>
 82             print("姝e湪涓嬭浇: "+鈥?/span>"鈥?/span>+t[0]+鈥?/span>"鈥?/span>+t[1])
 83             if not os.path.exists(file_path):  # 鍒ゆ柇鏄惁瀛樺湪鏂囦欢锛屼笉瀛樺湪鍒欑埇鍙?/span>
 84                 with open(file_path, 鈥?/span>wb鈥?/span>) as f:
 85                     f.write(get_content(t[1]))
 86                     f.close()
 87         except FileNotFoundError:
 88             continue
 89 if case == "澶ц兏濡?/span>":
 90     Type(case)
 91 
 92 elif case == "灏忕繕鑷€":
 93     Type(case)
 94 
 95 elif case == "榛戜笣琚?/span>":
 96     Type(case)
 97 
 98 elif case == "缇庤吙鎺?/span>":
 99     Type(case)
100 
101 elif case == "鏈夐鍊?/span>":
102     Type(case)
103 
104 elif case == "澶ф潅鐑?/span>":
105     Type(case)

鏁堟灉濡備笅

鎶€鏈浘鐗? src=

以上是关于浣跨敤python鍋氫竴涓埇铏獹UI绋嬪簭的主要内容,如果未能解决你的问题,请参考以下文章

浣跨敤Visual Studio 2015寮€鍙慉ndroid 绋嬪簭

涓轰粈涔堣浣跨敤鏅鸿兘鍚堢害鏉ユ瀯寤哄尯鍧楅摼搴旂敤绋嬪簭?

sqlmap浣跨敤

鍐呮牳妯″潡鍙傛暟璁捐

濡備綍浣跨敤 50 绉嶇紪绋嬭瑷€鍐欏嚭鈥淗ello World鈥濓紵