




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Python程序設計基礎與應用最新版教學課件第12-13章Python程序設計基礎與應用最新版教學課件第12-13章12.1 tkinter簡介Python標準庫tkinter是對Tcl/Tk的進一步封裝,與tkinter.ttk和tkinter.tix共同提供了強大的跨平臺GUI編程的功能。作為擴展,tkinter.ttk提供了Combobox、Progressbar和Treeview等組件,tkinter.scrolledtext提供了帶滾動條的文本框,messagebox、commondialog、dialog、colorchooser、simpledialog、filedialog等模
2、塊提供了各種對話框。12.1 tkinter簡介Python標準庫tkintetkinter常用組件組件名稱說明Button按鈕Canvas畫布,用于繪制直線、橢圓、多邊形等各種圖形Checkbutton復選框形式的按鈕Entry單行文本框Frame框架,可作為其他組件的容器,常用來對組件進行分組Label標簽,常用來顯示單行文本Listbox列表框Menu菜單Message多行文本框Radiobutton單選鈕,同一組中的單選鈕任何時刻只能有一個處于選中狀態Scrollbar滾動條Toplevel常用來創建新的窗口12.1 tkinter簡介tkinter常用組件組件名稱說明Button按鈕
3、Canvatkinter開發基本步驟:編寫通用代碼,例如數據庫操作搭建界面,放置組件,設置組件屬性,可以借助于PAGE編寫組件的事件處理代碼啟動應用程序,啟動消息主循環12.1 tkinter簡介tkinter開發基本步驟:12.1 tkinter簡介12.2 用戶登錄界面例12-1 tkinter實現用戶登錄界面。code例12_1.pyw12.2 用戶登錄界面例12-1 tkinter實現用戶12.3 選擇類組件應用例12-2 tkinter單選鈕、復選框、組合框、列表框綜合運用案例。code例12_2.pyw12.3 選擇類組件應用例12-2 tkinter單選鈕12.4 簡單畫圖程序例
4、12-3 使用tkinter實現畫圖程序。code例12_3.pyw12.4 簡單畫圖程序例12-3 使用tkinter實現12.5 電子時鐘例12-4 使用tkinter實現電子時鐘。code例12_4.pyw12.5 電子時鐘例12-4 使用tkinter實現電子12.6 屏幕顏色選擇器例12-5 獲取并顯示屏幕任意位置的顏色。code例12_5.pyw12.6 屏幕顏色選擇器例12-5 獲取并顯示屏幕任意位例12-6 使用tkinter實現抽獎式提問程序。code例12_6.pyw12.7 抽獎式提問程序例12-6 使用tkinter實現抽獎式提問程序。12.712.8 簡易計算器程序例
5、12-7 使用tkinter實現計算器程序。code例12_7.pyw1112.8 簡易計算器程序例12-7 使用tkinter實12.9 定時自動關閉的窗口例12-8 使用tkinter實現定時自動關閉的窗口。code例12_8.pyw1212.9 定時自動關閉的窗口例12-8 使用tkinte第13章 網絡爬蟲入門與應用13第13章 網絡爬蟲入門與應用1513.1 HTML與JavaScript基礎如果只是編寫爬蟲程序的話,畢竟不是開發網站,所以只要能夠看懂HTML代碼基本上就可以了,不要求能編寫。當然,對于一些高級爬蟲和特殊的網站,還需要具有深厚的JavaScript功底,或者JQuer
6、y、AJAX等知識。1413.1 HTML與JavaScript基礎如果只是編寫爬13.1.1 HTML基礎(1)h標簽在HTML代碼中,使用h1到h6表示不同級別的標題,其中h1級別的標題字體最大,h6級別的標題字體最小。該標簽的用法為:一級標題二級標題三級標題1513.1.1 HTML基礎(1)h標簽1713.1.1 HTML基礎(2)p標簽在HTML代碼中,p標簽表示段落,用法為:這是一個段落1613.1.1 HTML基礎(2)p標簽1813.1.1 HTML基礎(3)a標簽在HTML代碼中,a標簽表示超鏈接,使用時需要指定鏈接地址(由href屬性來指定)和在頁面上顯示的文本,用法為:點
7、這里1713.1.1 HTML基礎(3)a標簽1913.1.1 HTML基礎(4)img標簽在HTML代碼中,img標簽用來顯示一個圖像,并使用src屬性指定圖像文件地址,可以使用本地文件,也可以指定網絡上的圖片。例如:1813.1.1 HTML基礎(4)img標簽2013.1.1 HTML基礎(5)table、tr、td標簽在HTML代碼中,table標簽用來創建表格,tr用來創建行,td用來創建單元格,用法為: 第一行第一列 第一行第二列 第二行第一列 第二行第二列 1913.1.1 HTML基礎(5)table、tr、td標簽13.1.1 HTML基礎(6)ul、ol、li在HTML代碼
8、中,ul標簽用來創建無序列表,ol標簽用來創建有序列表,li標簽用來創建其中的列表項。例如,下面是ul和li標簽的用法: 紅色 綠色 藍色2013.1.1 HTML基礎(6)ul、ol、li2213.1.1 HTML基礎(7)div標簽在HTML代碼中,div標簽用來創建一個塊,其中可以包含其他標簽,例如: 紅色 綠色 藍色 第一段 第二段2113.1.1 HTML基礎(7)div標簽2313.1.2 JavaScript基礎(1)在網頁中使用JavaScript代碼的方式可以在HTML標簽的事件屬性中直接添加JavaScript代碼。例如,把下面的代碼保存為index.html文件并使用瀏覽
9、器打開,單擊按鈕“保存”,網頁會彈出提示“保存成功”。 2213.1.2 JavaScript基礎(1)在網頁中使用J13.1.2 JavaScript基礎對于較多但僅在個別網頁中用到的JavaScript代碼,可以寫在網頁中的標簽中。例如,下面的代碼保存為index.html并使用瀏覽器打開,會發現頁面上顯示的是“動態內容”而不是“靜態內容”。 靜態內容 document.getElementById(test).innerHTML=動態內容; 2313.1.2 JavaScript基礎對于較多但僅在個別網13.1.2 JavaScript基礎如果一個網站中會用到大量的JavaScript代
10、碼,一般會把這些代碼按功能劃分到不同函數中,并把這些函數封裝到一個擴展名為js的文件中,然后在網頁中使用。例如,和網頁在同一個文件夾中的myfunctions.js內容如下:function modify() document.getElementById(test).innerHTML=動態內容;在下面的頁面文件中,把外部文件myfunctions.js導入,然后調用了其中的函數: 靜態內容 modify();2413.1.2 JavaScript基礎如果一個網站中會用到13.1.2 JavaScript基礎(2)常用JavaScript事件把下面的代碼保存為index.html并使用瀏覽器
11、打開,會發現在每次頁面加載時都會彈出提示,但在頁面上進行其他操作時,并不會彈出提示。 靜態內容 2513.1.2 JavaScript基礎(2)常用JavaS13.1.2 JavaScript基礎除了常用的事件之外,還有一些特殊的方式可以執行JavaScript代碼。例如,下面的代碼演示了在鏈接標簽中使用href屬性指定JavaScript代碼的用法。 function test()alert(提示信息); 點這里 2613.1.2 JavaScript基礎除了常用的事件之外,13.1.2 JavaScript基礎(3)常用JavaScript對象下面的代碼演示了prompt()方法的用法,將
12、其保存為文件index.html并使用瀏覽器打開,會提示用戶輸入任意內容,然后在頁面上輸出相應的信息。 var city = prompt(請輸入一個城市名稱:, 煙臺); document.write(你輸入的是:+city); 2713.1.2 JavaScript基礎(3)常用JavaS13.1.2 JavaScript基礎把下面的代碼保存為文件index.html,此時頁面上會顯示圖像文件1.jpg的內容,單擊該圖像時會切換成為2.jpg的內容。 2813.1.2 JavaScript基礎把下面的代碼保存為文13.2 urllib基本應用與爬蟲案例Python 3.x標準庫urllib
13、提供了urllib.request、urllib.response、urllib.parse和urllib.error四個模塊,很好地支持了網頁內容讀取功能。再結合Python字符串方法和正則表達式,可以完成一些簡單的網頁內容爬取工作,也是理解和使用其他爬蟲庫的基礎。2913.2 urllib基本應用與爬蟲案例Python urllib的基本應用1.讀取并顯示網頁內容 import urllib.request fp = urllib.request.urlopen(r) print(fp.read(100) #讀取100個字節 print(fp.read(100).deco
14、de() #使用UTF8進行解碼 fp.close() #關閉連接3013.2.1 urllib的基本應用1.讀取并顯示網頁內容13.2.1 urllib的基本應用2.提交網頁參數(1)下面的代碼演示了如何使用GET方法讀取并顯示指定url的內容。 import urllib.request import urllib.parse params = urllib.parse.urlencode(spam: 1, eggs: 2, bacon: 0) url = /cgi-bin/query?%s % params with urllib.request.urlopen(url) as f: p
15、rint(f.read().decode(utf-8)3113.2.1 urllib的基本應用2.提交網頁參數3313.2.1 urllib的基本應用(2)下面的代碼演示了如何使用POST方法提交參數并讀取指定頁面內容。 import urllib.request import urllib.parse data = urllib.parse.urlencode(spam: 1, eggs: 2, bacon: 0) data = data.encode(ascii) with urllib.request.urlopen(http:/requestb.in/xrbl82xr, data) a
16、s f: print(f.read().decode(utf-8)3213.2.1 urllib的基本應用(2)下面的代碼演示了13.2.1 urllib的基本應用3.使用HTTP代理訪問頁面 import urllib.request proxies = http: :8080/ opener = urllib.request.FancyURLopener(proxies) with opener.open() as f: f.read().decode(utf-8)3313.2.1 urllib的基本應用3.使用HTTP代理訪13.2.2 urllib爬蟲案例例13-1 爬取公眾號文章中的
17、圖片。第1步 確定公眾號文章的地址,以微信公眾號“Python小屋”里的一篇文章為例,文章標題為“報告PPT(163頁):基于Python語言的課程群建設探討與實踐”,地址為:/s?_biz=MzI4MzM2MDgyMQ=&mid=2247486249&idx=1&sn=a37d079f541b194970428fb2fd7a1ed4&chksm=eb8aa073dcfd2965f2d48c5ae9341a7f8a1c2ae2c79a68c7d2476d8573c91e1de2e237c98534&scene=21#wechat_redirect3413.2.2 urllib爬蟲案例例13-1
18、 爬取公眾號文13.2.2 urllib爬蟲案例第2步 在瀏覽器(以Chrome為例)中打開該文章,然后單擊鼠標右鍵,選擇“查看網頁源代碼”,分析后發現,公眾號文章中的圖片鏈接格式為:3513.2.2 urllib爬蟲案例第2步 在瀏覽器(以Ch13.2.2 urllib爬蟲案例第3步 根據前面的分析,確定用來提取文章中圖片鏈接的正則表達式:pattern = data-type=png data-src=(.+?)3613.2.2 urllib爬蟲案例第3步 根據前面的分析,13.2.2 urllib爬蟲案例第4步 編寫并運行Python爬蟲程序,代碼如下:from re import fi
19、ndallfrom urllib.request import urlopenurl = /s?_biz=MzI4MzM2MDgyMQ=&mid=2247486249&idx=1&sn=a37d079f541b194970428fb2fd7a1ed4&chksm=eb8aa073dcfd2965f2d48c5ae9341a7f8a1c2ae2c79a68c7d2476d8573c91e1de2e237c98534&scene=21#wechat_redirectwith urlopen(url) as fp: content = fp.read().decode()pattern = data
20、-type=png data-src=(.+?)#查找所有圖片鏈接地址result = findall(pattern, content)#逐個讀取圖片數據,并寫入本地文件for index, item in enumerate(result): with urlopen(str(item) as fp: with open(str(index)+.png, wb) as fp1: fp1.write(fp.read()3713.2.2 urllib爬蟲案例第4步 編寫并運行Pyt13.3 scrapy爬蟲案例例13-2 使用scrapy框架編寫爬蟲程序。第1步 使用pip命令安裝好scrap
21、y之后,在命令提示符環境中執行下面的命令創建一個項目MyCraw:scrapy startproject MyCraw3813.3 scrapy爬蟲案例例13-2 使用scrap13.3 scrapy爬蟲案例第2步 然后編寫Python程序MyCrawMyCrawspidersMySpider.py,用于爬取指定頁面的內容,把網頁內容和圖片分別保存為文件,MySpider.py的代碼如下:codeMySpider.py3913.3 scrapy爬蟲案例第2步 然后編寫Pytho13.3 scrapy爬蟲案例第3步 在命令提示符環境中執行下面的命令,運行爬蟲程序。scrapy crawl myS
22、pider4013.3 scrapy爬蟲案例第3步 在命令提示符環境中13.3 scrapy爬蟲案例例13-3 使用scrapy框架編寫爬蟲程序,爬取天涯小說。第1步 以天涯小說“宜昌鬼事之大宗師”為例,首先確定第一頁的鏈接為:/post-16-1126849-1.shtml第2步 然后查看并分析網頁源代碼,確定作者ID,確定如何查找作者發表的帖子而過濾其他跟帖,并確定該小說不同頁的URL之間有什么規律。4113.3 scrapy爬蟲案例例13-3 使用scrap13.3 scrapy爬蟲案例第3步 把這些問題都確定之后,創建爬蟲項目。1)進入命令提示符(cmd)環境,切換至Python安裝目
23、錄的scripts目錄,執行命令scrapy startproject xiaoshuo創建爬蟲項目xiaoshuo,2)進入該目錄,編寫Python程序文件spidersspiderYichangGuishi.py,3)然后在命令提示符環境中執行命令scrapy crawl spiderYichangGuishi,稍等片刻即可爬取小說全文并生成記事本文檔。codespiderYichangGuishi.py4213.3 scrapy爬蟲案例第3步 把這些問題都確定之13.4 BeautifulSoup用法簡介 from bs4 import BeautifulSoup BeautifulSo
24、up(hello world!, lxml) #自動添加標簽hello world! BeautifulSoup(hello world!, lxml) #自動補全標簽hello world!4313.4 BeautifulSoup用法簡介 fro13.4 BeautifulSoup用法簡介 html_doc = The Dormouses storyThe Dormouses storyOnce upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they liv
25、ed at the bottom of a well.4413.4 BeautifulSoup用法簡介 htm13.4 BeautifulSoup用法簡介 soup = BeautifulSoup(html_doc, html.parser) #也可以指定lxml或其他解析器 print(soup.prettify() #以優雅的方式顯示出來 The Dormouses story The Dormouses story Once upon a time there were three little sisters; and their names were Elsie , Lacie an
26、d Tillie ;and they lived at the bottom of a well. . 4513.4 BeautifulSoup用法簡介 sou13.4 BeautifulSoup用法簡介 soup.title #訪問標簽的內容The Dormouses story #查看標簽的名字title soup.title.text #查看標簽的文本The Dormouses story soup.title.string #查看標簽的文本The Dormouses story soup.title.parent #查看上一級標簽The Dormouses story soup.hea
27、dThe Dormouses story soup.b #訪問標簽的內容The Dormouses story soup.body.b #訪問中標簽的內容The Dormouses story #把整個BeautifulSoup對象看作標簽對象document4613.4 BeautifulSoup用法簡介 sou13.4 BeautifulSoup用法簡介 soup.body #查看body標簽內容The Dormouses storyOnce upon a time there were three little sisters; and their names wereElsie,Lac
28、ie andTillie;and they lived at the bottom of a well.4713.4 BeautifulSoup用法簡介 sou13.4 BeautifulSoup用法簡介 soup.p #查看段落信息The Dormouses story soup.pclass #查看標簽屬性title soup.p.get(class) #也可以這樣查看標簽屬性title soup.p.text #查看段落文本The Dormouses story soup.p.contents #查看段落內容The Dormouses story soup.aElsie soup.a.a
29、ttrs #查看標簽所有屬性class: sister, href: /elsie, id: link14813.4 BeautifulSoup用法簡介 sou13.4 BeautifulSoup用法簡介 soup.find_all(a) #查找所有標簽Elsie, Lacie, Tillie soup.find_all(a, b) #同時查找和標簽The Dormouses story, Elsie, Lacie, Tillie4913.4 BeautifulSoup用法簡介 sou13.4 BeautifulSoup用法簡介 import re soup.find_all(href=pil
30、e(elsie) #查找href包含特定關鍵字的標簽Elsie soup.find(id=link3) #查找屬性id=link3的標簽Tillie soup.find_all(a, id=link3) #查找屬性link3的a標簽Tillie for link in soup.find_all(a): print(link.text,:,link.get(href)Elsie : /elsieLacie : /lacieTillie : /tillie5013.4 BeautifulSoup用法簡介 imp13.4 BeautifulSoup用法簡介 print(soup.get_text(
31、) #返回所有文本The Dormouses storyThe Dormouses storyOnce upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well. soup.aid = test_link1 #修改標簽屬性的值 soup.aElsie soup.a.string.replace_with(test_Elsie) #修改標簽文本Elsie soup.a.stringtest_Elsie51
32、13.4 BeautifulSoup用法簡介 pri13.4 BeautifulSoup用法簡介 for child in soup.body.children: #遍歷直接子標簽 print(child)The Dormouses storyOnce upon a time there were three little sisters; and their names weretest_Elsie,Lacie andTillie;and they lived at the bottom of a well.5213.4 BeautifulSoup用法簡介 for13.4 Beautiful
33、Soup用法簡介 test_doc = s = BeautifulSoup(test_doc, lxml) for child in s.html.children: #遍歷直接子標簽 print(child) for child in s.html.descendants: #遍歷子孫標簽 print(child)5313.4 BeautifulSoup用法簡介 tes13.5 requests基本操作與爬蟲案例Python擴展庫requests可以使用比標準庫urllib更簡潔的形式來處理HTTP協議和解析網頁內容,也是比較常用的爬蟲工具之一,完美支持Python 3.x,使用pip可以直
34、接在線安裝。安裝成功之后,使用下面的方式導入這個庫: import requests5413.5 requests基本操作與爬蟲案例Python擴13.5.1 requests基本操作(1)增加頭部并設置訪問代理 url = /some/endpoint headers = user-agent: my-app/0.0.1 r = requests.get(url, headers=headers)5513.5.1 requests基本操作(1)增加頭部并設置13.5.1 requests基本操作(2)訪問網頁并提交數據 payload = key1: value1, key2: value2
35、 r = requests.post(/post, data=payload) print(r.text) #查看網頁信息,略去輸出結果 url = /some/endpoint payload = some: data r = requests.post(url, json=payload) print(r.text) #查看網頁信息,略去輸出結果 print(r.headers) #查看頭部信息,略去輸出結果 print(r.headersContent-Type)application/json; charset=utf-8 print(r.headersContent-Encoding
36、)gzip5613.5.1 requests基本操作(2)訪問網頁并提交13.5.1 requests基本操作(3)獲取和設置cookies下面的代碼演示了使用get()方法獲取網頁信息時cookies屬性的用法: r = requests.get(/) r.cookies #查看cookies5713.5.1 requests基本操作(3)獲取和設置co13.5.1 requests基本操作下面的代碼演示了使用get()方法獲取網頁信息時設置cookies參數的用法: url = /cookies cookies = dict(cookies_are=working) r = request
37、s.get(url, cookies=cookies) #設置cookies print(r.text) cookies: cookies_are: working 5813.5.1 requests基本操作下面的代碼演示了使用13.5.2 requests爬蟲案例例13-4 使用requests庫爬取微信公眾號“Python小屋”文章“Python使用集合實現素數篩選法”中的所有超鏈接。5913.5.2 requests爬蟲案例例13-4 使用r13.5.2 requests爬蟲案例 import requests url = /s?_biz=MzI4MzM2MDgyMQ=&mid=2247
38、486531&idx=1&sn=7eeb27a03e2ee8ab4152563bb110f248&chksm=eb8aa719dcfd2e0f7b1731cfd8aa74114d68facf1809d7cdb0601e3d3be8fb287cfc035002c6#rd r = requests.get(url) r.status_code #響應狀態碼200 r.text:300 #查看網頁源代碼前300個字符n!-headTrap-n n nn 篩選法 in r.text #測試網頁源代碼中是否包含字符串篩選法True r.encoding #查看網頁編碼格式UTF-86013.5.2 requests爬蟲案例 i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 9 正確認識廣告 教學設計-2024-2025學年道德與法治四年級上冊統編版
- 3《學會反思》(教學設計)-部編版道德與法治六年級下冊
- 精神心理科普知識
- Unit 8 Wonderland-Further study 教學設計 2024-2025學年譯林版(2024)英語七年級下冊
- 11 ao ou iu 教學設計-2024-2025學年一年級語文上冊統編版
- 絲路的故事(教案)-2024-2025學年人教版(2024)美術一年級下冊
- 血透護理管理規范
- 七年級信息技術上冊 第3課 計算機的發展與應用教學設計 川教版
- 貝爾安親培訓
- 出版專業職業資格《出版理論與實務》測試題庫(含標準答案)
- 基坑支護、降水及土方開挖專項施工方案
- 幼兒數字1-100字帖練習
- 細胞生物學-7細胞信號轉導課件
- 攪拌站安全培訓試卷
- 茶葉市場營銷講義
- 走進中國傳統節日 詳細版課件
- GB∕T 37244-2018 質子交換膜燃料電池汽車用燃料 氫氣
- API SPEC 5DP-2020鉆桿規范
- 乙肝兩對半ppt課件
- 鍋爐空氣預熱器拆除安裝方案
- 蓮中器樂演奏活動方案
評論
0/150
提交評論