A. 怎麼用python畫5分鍾K線圖
現在幾乎所有的大網站都在主要的欄目 做了防爬行的處理。 象這樣的還算是簡單的。 大不了你分析一下JS。 如果不想分析JS。就麻煩 些。 你安裝一個pyqt,裡面有一個qtbrowser, 你可以驅動這個瀏覽器去爬行。要幾百行代碼才能搞定。怎麼用Python畫5分鍾K線圖
B. 請教大牛們~python 如何獲取前五分鍾的時間~
調試通過
importtime
#當前時間
printtime.strftime("%Y-%m-%d%H:%M:%S",time.localtime())
t=time.localtime(time.time()-300)
#5分鍾前
printtime.strftime("%Y-%m-%d%H:%M:%S",t)
C. Python異常處理知識點匯總,五分鍾就能學會
什麼是異常?
1.錯誤
從軟體方面來說,錯誤是語法或是邏輯上的。錯誤是語法或是邏輯上的。
語法錯誤指示軟體的結構上有錯誤,導致不能被解釋器解釋或編譯器無法編譯。這些些錯誤必須在程序執行前糾正。
當程序的語法正確後,剩下的就是邏輯錯誤了。邏輯錯誤可能是由於不完整或是不合法的輸入所致;
在其它情況下,還可能是邏輯無法生成、計算、或是輸出結果需要的過程無法執行。這些錯誤通常分別被稱為域錯誤和范圍錯誤。
當python檢測到一個錯誤時,python解釋器就會指出當前流已經無法繼續執行下去。這時候就出現了異常。
2.異常
對異常的最好描述是:它是因為程序出現了錯誤而在正常控制流以外採取的行為。
這個行為又分為兩個階段:首先是引起異常發生的錯誤,然後是檢測(和採取可能的措施)階段。
第一階段是在發生了一個異常條件(有時候也叫做例外的條件)後發生的。
只要檢測到錯誤並且意識到異常條件,解釋器就會發生一個異常。引發也可以叫做觸發,拋出或者生成。解釋器通過它通知當前控制流有錯誤發生。
python也允許程序員自己引發異常。無論是python解釋器還是程序員引發的,異常就是錯誤發生的信號。
當前流將被打斷,用來處理這個錯誤並採取相應的操作。這就是第二階段。
對於異常的處理發生在第二階段,異常引發後,可以調用很多不同的操作。
可以是忽略錯誤(記錄錯誤但不採取任何措施,採取補救措施後終止程序。)或是減輕問題的影響後設法繼續執行程序。
所有的這些操作都代表一種繼續,或是控制的分支。關鍵是程序員在錯誤發生時可以指示程序如何執行。
python用異常對象(exception object)來表示異常。遇到錯誤後,會引發異常。
如果異常對象並未被處理或捕捉,程序就會用所謂的回溯(traceback)終止執行
異常處理
捕捉異常可以使用try/except語句。
try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。
如果你不想在異常發生時結束你的程序,只需在try里捕獲它。
語法:
以下為簡單的try....except...else的語法:
Try的工作原理是,當開始一個try語句後,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。
如果當try後的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。
如果在try後的語句里發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,並列印預設的出錯信息)。
如果在try子句執行時沒有發生異常,python將執行else語句後的語句(如果有else的話),然後控制流通過整個try語句。
使用except而不帶任何異常類型
可以不帶任何異常類型使用except,如下實例:
以上方式try-except語句捕獲所有發生的異常。但這不是一個很好的方式,我們不能通過該程序識別出具體的異常信息。因為它捕獲所有的異常。
D. 如何用python,每隔5分鍾對實時日誌做統計處理
有下面幾種:
(1)內連接,pd.merge(a1, a2, on='key')
(2)左連接,pd.merge(a1, a2, on='key', how='left')
(3)右連接,pd.merge(a1, a2, on='key', how='right')
(4)外連接, pd.merge(a1, a2, on='key', how='outer')
至於四者的具體差別,具體學習參考sql中相應的語法。
E. 好程序員分享Python之五分鍾了解Django框架設計
Python編程語言的持續火爆,在最新Tiobe編程語言排行榜中位列第五,熱度持續增加,尤其是在 AI 和 大數據時代,Python是 AI 和大數據時代的第一開發語言。這已經是一個不爭的事實了,唯一的懸念就是誰能坐上第二把交椅了。
問題1:什麼是軟體框架? 舉個簡單的例子,對於一個公司來說,公司中有各個職能部門,每個部門各司其職,通過部門之間的配合來完成工作,這些部門就形成了一個公司的組織架構。從某種意義上來說,公司就是一種框架。那麼對應到軟體設計上來說,軟體框架是由其中的各個模塊組成的,每個模塊負責特定的功能,模塊與模塊之間相互協作來完成軟體開發。 一個公司,它是針對某一市場而成立的,而軟體框架的設計,也是針對某一類軟體問題而設計的,其目的主要是提高軟體開發效率
問題2:Django的簡介和設計思想? Django是用python語言寫的開源web開發框架,並遵循MVC設計。勞倫斯出版集團為了開發以新聞內容為主的網站,而開發出來了這個框架,於2005年7月在BSD許可證下發布。Django的主要目的是簡便、快速的開發資料庫驅動的網站。它強調代碼復用,多個組件可以很方便的以「插件」形式服務於整個框架,Django有許多功能強大的第三方插件,你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴展性。它還強調快速開發原則。
問題3:MVC簡介 MVC的全拼為Model-View-Controller,最早在20世紀80年代為程序語言Smalltalk發明的一種軟體設計模式,是為了將傳統的輸入(input)、處理(processing)、輸出(output)任務運用到圖形化用戶交互模型中而設計的。 現MVC是一種架構設計模式,是一種設計理念。是為了達到分層設計的目的,從而使代碼解耦,便於維護和代碼的復用。MVC是3個單詞的縮寫,全稱:Model-View-Controller(模型-視圖-控制器)。MVC就是提供一種規則,讓你把相同類型的代碼放在一起,這樣就形成了層次,從而達到分層解耦、復用、便於測試和維護的目的。
當前主流的開發語言如Java、PHP、Python中都有MVC框架。 Web MVC各部分的功能 M全拼為Model,主要封裝對資料庫層的訪問,對資料庫中的數據進行增、刪、改、查操作。 V全拼為View,用於封裝結果,生成頁面展示的html內容。 C全拼為Controller,用於接收請求,處理業務邏輯,與Model和View交互,返回結果
問題4:Django框架遵循MVC設計,並且有一個專有名詞:MVT MVT各部分的功能: M全拼為Model,與MVC中的M功能相同,負責和資料庫交互,進行數據處理。 V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,返回應答。 T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html。
F. 請問如何學python
Python 是一門神奇的多功能編程語言,你可以用它搭建網站、開發機器學習演算法,甚至是無人機。世界上很大一部分程序員都在使用 Python,而他們這么做是有充分理由的。Python 可以讓你做幾乎所有事。
1.找到學習的動力
在你學習 Python 之前,你很有必要先問問自己為什麼想要學 Python。這會是一段很漫長,有時候甚至痛苦的旅程,沒有足夠的動力很難堅持下來。舉例來說,初中、高中和大學的編程課我都在睡覺,因為我沒有動力去記那些語法。而另一方面,當我需要用 Python 搭建一個可以自動給文章打分的網站時,是否有激情熬夜完成自己想要做的項目。找到你的動力可以幫你找到你的目標,以及實現目標的途徑,而且期間毫不無聊。你不用想出一個很具體的項目,只要一個你感興趣的大概領域就足夠了。
2.學習python的基礎語法
在深入你所選的領域之前,你必須先學會 Python 的基礎語法。你會希望花盡可能少的時間在語法上,因為你很難有動力去學習這些。可以在網上找資料或購買相應的書籍。重點再次強調你只需要花盡可能少的時間學習基本語法。你越快開始項目,後面你就學得越快。之後你遇到障礙的時候可以隨時回頭看基礎的語法。這個階段你只應該花幾周時間,絕對不需要超過一個月。
3.建立結構化項目
一旦你學會了基本語法,你就可以開始自己做項目了。項目是一個很好的學習方法,因為你可以實踐你的知識。如果你不實踐你的知識,你很難記住它。項目可以推進你的能力,幫助你學習新事物,並幫你建立一個可以展示給潛在僱主看的作品集。然而,在這個階段形式自由的項目可能會讓你很痛苦——你會經常碰到障礙,必須看文檔。因此,在你可以完全自己做項目之前,最好先從更結構化的項目開始。很多學習資源都提供了結構化的項目,這些項目可以讓你在感興趣的領域做有意思的事情且不會碰到太多障礙。
4.著手你自己的項目
你已經完成了一些結構化項目,接下來就是你著手自己的項目的時候了。你依然需要找資料,學習概念,但你可以開始做你想做的事了。在你開始做自己的項目之前,你需要能自如的調試你項目中的錯誤和問題。
5.不斷做更難的項目
不斷提高你的項目的難度並擴大范圍。如果你對你在做的事情非常熟悉,那麼是時候嘗試一些更困難的事情了。你需要不斷的學習,做新項目。如果你做的正確的話,你會回看你六個月之前的代碼覺得怎麼這么糟糕。這樣就說明你在正確的道路上。做你感興趣的事情意味著你永遠不會感到疲倦或無聊。
加油!學習python的路上你不會孤獨,也可以找志同道合的小夥伴共同學習進步,後續學習起來也會事半功倍。
G. python執行5分鍾後關閉
解決方式如下。
有時當一個條件成立的情況下,需要終止程序,可以使用sys.exit()退出程序。sys.exit()會引發一個異常:
1、如果這個異常沒有被捕獲,那麼python編譯器將會退出,後面的程序將不會執行。
2、如果這個異常被捕獲(try...except...finally),捕獲這個異常可以做一些額外的清理工作,後面的程序還會繼續執行。
註:0為正常退出,其他數值(1-127)為不正常,可拋異常事件供捕獲。另一種終止程序的方法os._exit()
一般情況下使用sys.exit()即可,一般在fork出來的子進程中使用os._exit()
採用sys.exit(0)正常終止程序,程序終止後shell運行不受影響。
採用os._exit(0)關閉整個shell,調用sys._exit(0)後整個shell都重啟了(RESTART Shell)。
H. 如何用最簡單的Python爬蟲採集整個網站
在之前的文章中Python實現「維基網路六度分隔理論「之基礎爬蟲,我們實現了在一個網站上隨機地從一個鏈接到另一個鏈接,但是,如果我們需要系統地把整個網站按目錄分類,或者要搜索網站上的每一個頁面,我們該怎麼辦?我們需要採集整個網站,但是那是一種非常耗費內存資源的過程,尤其是處理大型網站時,比較合適的工具就是用一個資料庫來存儲採集的資源,之前也說過。下面來說一下怎麼做。
網站地圖sitemap
網站地圖,又稱站點地圖,它就是一個頁面,上面放置了網站上需要搜索引擎抓取的所有頁面的鏈接(註:不是所有頁面,一般來說是所有文章鏈接。大多數人在網站上找不到自己所需要的信息時,可能會將網站地圖作為一種補救措施。搜索引擎蜘蛛非常喜歡網站地圖。
對於SEO,網站地圖的好處:
1.為搜索引擎蜘蛛提供可以瀏覽整個網站的鏈接簡單的體現出網站的整體框架出來給搜索引擎看;
2.為搜索引擎蜘蛛提供一些鏈接,指向動態頁面或者採用其他方法比較難以到達的頁面;
3.作為一種潛在的著陸頁面,可以為搜索流量進行優化;
4.如果訪問者試圖訪問網站所在域內並不存在的URL,那麼這個訪問者就會被轉到「無法找到文件」的錯誤頁面,而網站地圖可以作為該頁面的「准」內容。
數據採集
採集網站數據並不難,但是需要爬蟲有足夠的深度。我們創建一個爬蟲,遞歸地遍歷每個網站,只收集那些網站頁面上的數據。一般的比較費時間的網站採集方法從頂級頁面開始(一般是網站主頁),然後搜索頁面上的所有鏈接,形成列表,再去採集到的這些鏈接頁面,繼續採集每個頁面的鏈接形成新的列表,重復執行。
很明顯,這是一個復雜度增長很快的過程。加入每個頁面有10個鏈接,網站上有5個頁面深度,如果採集整個網站,一共得採集的網頁數量是105,即100000個頁面。
因為網站的內鏈有很多都是重復的,所以為了避免重復採集,必須鏈接去重,在Python中,去重最常用的方法就是使用自帶的set集合方法。只有「新」鏈接才會被採集。看一下代碼實例:
from urllib.request import urlopenfrom bs4 import BeautifulSoupimport repages = set()def getLinks(pageurl):globalpageshtml= urlopen("" + pageurl)soup= BeautifulSoup(html)forlink in soup.findAll("a", href=re.compile("^(/wiki/)")):if'href' in link.attrs:iflink.attrs['href'] not in pages:#這是新頁面newPage= link.attrs['href']print(newPage)pages.add(newPage)getLinks(newPage)getLinks("")
原理說明:程序執行時,用函數處理一個空URL,其實就是維基網路的主頁,然後遍歷首頁上每個鏈接,並檢查是否已經在全局變數集合pages裡面,如果不在,就列印並添加到pages集合,然後遞歸處理這個鏈接。
遞歸警告:Python默認的遞歸限制是1000次,因為維基網路的鏈接浩如煙海,所以這個程序達到遞歸限制後就會停止。如果你不想讓它停止,你可以設置一個遞歸計數器或者其他方法。
採集整個網站數據
為了有效使用爬蟲,在用爬蟲的時候我們需要在頁面上做一些事情。我們來創建一個爬蟲來收集頁面標題、正文的第一個段落,以及編輯頁面的鏈接(如果有的話)這些信息。
第一步,我們需要先觀察網站上的頁面,然後制定採集模式,通過F12(一般情況下)審查元素,即可看到頁面組成。
觀察維基網路頁面,包括詞條和非詞條頁面,比如隱私策略之類的頁面,可以得出下面的規則:
所有的標題都是在h1→span標簽里,而且頁面上只有一個h1標簽。
所有的正文文字都在div#bodyContent標簽里,如果我們想獲取第一段文字,可以用div#mw-content-text→p,除了文件頁面,這個規則對所有頁面都適用。
編輯鏈接只出現在詞條頁面上,如果有編輯鏈接,都位於li#ca-edit標簽的li#ca-edit→span→a裡面。
調整一下之前的代碼,我們可以建立一個爬蟲和數據採集的組合程序,代碼如下:
import redef getLinks(pageUrl):global pageshtml = urlopen("" + pageUrl)soup = BeautifulSoup(html)try:print(soup.h1.get_text())print(soup.find(id="mw-content-text").findAll("p")[0])print(soup.find(id="ca-edit").find("span").find("a").attrs['href'])except AttributeError:print("頁面缺少屬性")for link in soup.findAll("a", href =re.compile("^(/wiki/)")):if 'href' in link.attrs:#這是新頁面newPage = link.attrs['href']print("------------------\n"+newPage)
這個for循環和原來的採集程序基本上是一樣的,因為不能確定每一頁上都有所有類型的數據,所以每個列印語句都是按照數據在頁面上出現的可能性從高到低排列的。
數據存儲到MySQL
前面已經獲取了數據,直接列印出來,查看比較麻煩,所以我們就直接存到MySQL裡面吧,這里只存鏈接沒有意義,所以我們就存儲頁面的標題和內容。前面我有兩篇文章已經介紹過如何存儲數據到MySQL,數據表是pages,這里直接給出代碼:
import reimport datetimeimport randomimport pymysqlconn = pymysql.connect(host = '127.0.0.1',port = 3306, user = 'root', passwd = '19930319', db = 'wiki', charset ='utf8mb4')cur = conn.cursor()cur.execute("USE wiki")#隨機數種子random.seed(datetime.datetime.now())#數據存儲def store(title, content):cur.execute("INSERT INTO pages(title, content)VALUES(\"%s\", \"%s\")", (title, content))cur.connection.commit()def getLinks(articleUrl):html = urlopen("" + articleUrl)title = soup.find("h1").get_text()content =soup.find("div",{"id":"mw-content-text"}).find("p").get_text()store(title, content)returnsoup.find("div",{"id":"bodyContent"}).findAll("a",href=re.compile("^(/wiki/)((?!:).)*$"))#設置第一頁links =getLinks("/wiki/Kevin_Bacon")try:while len(links)>0:newArticle = links[random.randint(0, len(links)-1)].attrs['href']print (newArticle)links = getLinks(newArticle)finally:cur.close()conn.close()
小結
今天主要講一下Python中遍歷採集一個網站的鏈接,方便下面的學習。
希望通過上面的操作能幫助大家。如果你有什麼好的意見,建議,或者有不同的看法,我都希望你留言和我們進行交流、討論。
I. 好程序員Python技術之五分鍾了解Django框架設計
Python編程語言的持續火爆,在最新Tiobe編程語言排行榜中位列第五,熱度持續增加,尤其是在 AI 和 大數據時代,Python是 AI 和大數據時代的第一開發語言。這已經是一個不爭的事實了,唯一的懸念就是誰能坐上第二把交椅了。Python是膠水語言,應用及其廣泛。在web應用領域,國內知名互聯公司:有號稱文藝青年的聖地--豆瓣評分,曾經主打高端問答知識社區的--知乎,唯有愛和美食不可辜負的--下廚房……
談到在web應用領域,除了Python的語法,Django是Python後台一個最重要的框架。今天千峰教育的講師和大家簡單的聊一下Django框架。
方法/步驟
問題1:什麼是軟體框架? 舉個簡單的例子,對於一個公司來說,公司中有各個職能部門,每個部門各司其職,通過部門之間的配合來完成工作,這些部門就形成了一個公司的組織架構。從某種意義上來說,公司就是一種框架。那麼對應到軟體設計上來說,軟體框架是由其中的各個模塊組成的,每個模塊負責特定的功能,模塊與模塊之間相互協作來完成軟體開發。 一個公司,它是針對某一市場而成立的,而軟體框架的設計,也是針對某一類軟體問題而設計的,其目的主要是提高軟體開發效率。
問題2:Django的簡介和設計思想? Django是用python語言寫的開源web開發框架,並遵循MVC設計。勞倫斯出版集團為了開發以新聞內容為主的網站,而開發出來了這個框架,於2005年7月在BSD許可證下發布。Django的主要目的是簡便、快速的開發資料庫驅動的網站。它強調代碼復用,多個組件可以很方便的以「插件」形式服務於整個框架,Django有許多功能強大的第三方插件,你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴展性。它還強調快速開發原則。
問題3:MVC簡介 MVC的全拼為Model-View-Controller,最早在20世紀80年代為程序語言Smalltalk發明的一種軟體設計模式,是為了將傳統的輸入(input)、處理(processing)、輸出(output)任務運用到圖形化用戶交互模型中而設計的。 現MVC是一種架構設計模式,是一種設計理念。是為了達到分層設計的目的,從而使代碼解耦,便於維護和代碼的復用。MVC是3個單詞的縮寫,全稱:Model-View-Controller(模型-視圖-控制器)。MVC就是提供一種規則,讓你把相同類型的代碼放在一起,這樣就形成了層次,從而達到分層解耦、復用、便於測試和維護的目的。
當前主流的開發語言如Java、PHP、Python中都有MVC框架。 Web MVC各部分的功能 M全拼為Model,主要封裝對資料庫層的訪問,對資料庫中的數據進行增、刪、改、查操作。 V全拼為View,用於封裝結果,生成頁面展示的html內容。 C全拼為Controller,用於接收請求,處理業務邏輯,與Model和View交互,返回結果 問題4:Django框架遵循MVC設計,並且有一個專有名詞:MVT MVT各部分的功能: M全拼為Model,與MVC中的M功能相同,負責和資料庫交互,進行數據處理。 V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,返回應答。 T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html。
J. 最好的 Python 網站開發方面的學習教程有哪些
我剛好自學過,就在前些天。
我用7天時間自學了Python,教材是:http://learnpythonthehardway.org/book/ 中文版:http://readthedocs.org/docs/learn-python-the-hard-way-zh_cn-translation/en/latest/index.html
然後用6天時間自學了Django,教材是:http://www.djangobook.com/en/2.0/ 中文版:http://djangobook.py3k.cn/2.0/
然後用14天時間開發出了我的幫人實現夢想的網站http://www.sunflr.me/。因為剛入門,估計代碼質量很差。開發的時候,主要看的是:https://docs.djangoproject.com/en/1.3/,倒沒怎麼看Python的網站。
網站開發完上線,我用了2、3天時間,才弄上亞馬遜的EC2伺服器。因為沒弄過Linux, Apache, Bitnami的DjangoStack, 期間幾次想死的心都有了,如何上傳文件就搞了1天多。其實有點經驗的,20分鍾估計就夠了。