當前位置:首頁 » 編程語言 » python的http伺服器

python的http伺服器

發布時間: 2023-03-17 17:47:06

python爬蟲前奏

在瀏覽器中發送http請求的過程:

1.當用戶在瀏覽器地址欄輸入URL並按回車鍵時,瀏覽器會向HTTP伺服器發送HTTP請求。HTTP請求主要分為「獲取」和「發布」兩種方法。

2.當我們輸入網址htp://www網路。com在瀏覽器中,瀏覽器發送Request請求獲取HTP/www Bai.com的html文件,伺服器將Response文件對象發回瀏覽器。

3.瀏覽器分析響應中的HTML,發現它引用了很多其他文件,比如Images文件、CSS文件、JS文件。瀏覽器會自動再次發送一個獲取圖片、CSS文件或JS文件的請求。

4.當所有文件下載成功後,網頁將完全按照HTML語法結構顯示。

#url解釋:

URL是統一資源定位符的縮寫,統一資源定位符。

網址由以下部分組成:

scheme://host:port/path/> query-string = XXX # ancho

方案:表示訪問的協議,如http或https、ftp等。

主機:主機名、域名,如www..com。

埠:埠號。當您訪問網站時,瀏覽器默認使用埠80。

路徑:找到路徑。例如,在www.jianshu.com/trending/now,,以下趨勢/現在是路徑。

查詢字元串:查詢字元串,如www..com/s?. Wd=python,後跟Wd = python,是搜索字元串。

錨點:錨點,背景一般忽略,前端用於頁面定位。

瀏覽器中的一個ufl,瀏覽器將對這個url進行編碼。除了英文字母、數字和一些符號之外,所有其他符號都用百分號加上十六進制代碼值進行編碼。

#請求頭通用參數:

在http協議中,當向伺服器發送請求時,數據被分成三部分。第一個是把數據放在url中,第二個是把數據放在正文中(在post請求中),第三個是把數據放在頭部。這里,我們介紹一些經常在網路爬蟲中使用的請求頭參數:

用戶代理:瀏覽器名稱。這通常用於網路爬蟲。當請求網頁時,伺服器可以通過這個參數知道哪個瀏覽器發送了請求。如果我們通過爬蟲發送請求,那麼我們的用戶代理就是Python。對於那些有反爬蟲機制的網站,很容易判斷你的請求是爬蟲。因此,我們應該始終將此值設置為某些瀏覽器的值,以偽裝我們的爬蟲。

引用者:指示當前請求來自哪個網址。這也可以作為反爬蟲技術。如果不是來自指定頁面,則不會做出相關響應。

http協議是無狀態的。也就是說,同一個人發送了兩個請求,伺服器無法知道這兩個請求是否來自同一個人。因此,此時使用cookie進行標識。一般來說,如果你想成為一個登錄後才能訪問的網站,你需要發送cookie信息。

常見的請求方法有:

在Http協議中,定義了八種請求方法。這里介紹兩種常見的請求方法,即get請求和post請求。

Get request:一般來說,get request只在從伺服器獲取數據時使用,不會對伺服器資源產生任何影響。

發布請求:發送數據(登錄)、上傳文件等。,並在會影響伺服器資源時使用post請求。

這是網站開發中常用的兩種方法。並且一般會遵循使用原則。然而,為了成為一個反爬蟲機制,一些網站和伺服器經常出於常識玩牌。應該使用get方法的請求可能必須更改為post請求,這取決於具體情況。

常見響應狀態代碼:

00:請求正常,伺服器正常最近數據。

31:永久重定向。例如,當您訪問www.jingdong.com時,您將被重定向到www.jd.com。

32:臨時重定向。例如,當訪問需要登錄的頁面時,此時沒有登錄,您將被重定向到登錄頁面。

400:在伺服器上找不到請求的網址。換句話說,盾請求ur1錯誤。

403:伺服器拒絕訪問,許可權不足。

50:伺服器內部錯誤。可能是伺服器有bug。

② 請問python建立simplehttpserver伺服器的時候為什麼會卡住

正常,這才是伺服器
首先確保裝了Python,我裝的是2.x版本,對了,我的操作系統是WIN7,其實對於Python來說,什麼操作系統並不重要。Python內置了一個簡單的HTTP伺服器,只需要在命令行下面敲一行命令,一個HTTP伺服器就起來了:
python -m SimpleHTTPServer 80

後面的80埠是可選的,不填會採用預設埠8000。注意,這會將當前所在的文件夾設置為默認的Web目錄,試著在瀏覽器敲入本機地址:

如果當前文件夾有index.html文件,會默認顯示該文件,否則,會以文件列表的形式顯示目錄下所有文件。這樣已經實現了最基本的文件分享的目的,你可以做成一個腳本,再建立一個快捷方式,就可以很方便的啟動文件分享了。如果有更多需求,完全可以根據自己需要定製,具體的請參見官方文檔SimpleHTTPServer,或者直接看源碼。我拷貝一段,方便參考:
import SimpleHTTPServer
import SocketServer

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()

如果你想改變埠號,你可以使用如下的命令:

python -m SimpleHTTPServer 8080

如果你只想讓這個HTTP伺服器服務於本地環境,那麼,你需要定製一下你的Python的程序,下面是一個示例:

import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass = BaseHTTPServer.HTTPServer
Protocol = "HTTP/1.0"

if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
server_address = ('127.0.0.1', port)

HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)

sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()

注意:所有的這些東西都可以在 Windows 或 Cygwin 下工作。
您可能感興趣的文章:

③ Python Http 請求

如果要進行客戶端和伺服器端之間的消息傳遞,我們可以使用HTTP協議請求

通過URL網址傳遞信息,可以直接在URL中寫上要傳遞的信息,也可以由表單進行傳遞(表單中的信息會自動轉化為URL地址中的數據,通過URL地址傳遞)

備註:已經取得資源,並將資源添加到響應中的消息體

可以向伺服器提交數據,是一種比較安全的數據傳遞方式,比如在登錄時,經常使用 POST 請求發送數據

請求伺服器存儲一個資源,通常需要制定存儲的位置

請求伺服器刪除一個資源

請求獲取對應的 HTTP 報頭信息

可以獲得當前URL所支持的請求類型

狀態碼:200 OK
表明請求已經成功. 默認情況下成功的請求將會被緩存

不同請求方式對於請求成功的意義如下:
GET:已經取得資源,並將資源添加到響應中的消息體.
HEAD:作為消息體的頭部信息
POST:在消息體中描述此次請求的結果

請求成功對於PUT 和 DELETE 來說並不是200 ok 而是 204 所代表的沒有資源 (或者 201 所代表的當一個資源首次被創建成功

以下是常見狀態碼及含義

④ 如何實現Python多進程http伺服器

使用 RabbitMQ + Celery 完全可以滿足你的需要求,在靈活性、可靠性、可伸縮性都有保證,唯一的缺點就是過於重量級。

⑤ python 怎麼搭建簡單的web伺服器

利用Python自帶的包可以建立簡單的web伺服器。在DOS里cd到准備做伺服器根目錄的路徑下,輸入命令:x0dx0apython -m Web伺服器模塊 [埠號,默認8000]x0dx0a例如:x0dx0apython -m SimpleHTTPServer 8080x0dx0a然後就可以在瀏覽器中輸入x0dx0ah ttp://loca lhost:埠號/路徑x0dx0a來訪問伺服器資源。 x0dx0a例如:x0dx0ah ttp://local host:808 0/index.h tm(當然index.htm文件得自己創建)x0dx0a其他機器也可以通過伺服器的IP地址來訪問。x0dx0ax0dx0a這里的「Web伺服器模塊」有如下三種:x0dx0ax0dx0aBaseHTTPServer: 提供基本的Web服務和處理器類,分別是HTTPServer和BaseHTTPRequestHandler。x0dx0aSimpleHTTPServer: 包含執行GET和HEAD請求的SimpleHTTPRequestHandler類。x0dx0aCGIHTTPServer: 包含處理POST請求和執行CGIHTTPRequestHandler類。

⑥ 用python搭建簡單的http伺服器,同一區域網內的舍友都無法訪問,只能本地訪問,怎麼破

是用localhost還是用伺服器網卡ip作為python伺服器的初始化參數?
最好採用ip地址作參數。

⑦ Python http伺服器CGI報錯!

可以把報錯信息粘貼出來嗎

⑧ 如何實現Python多進程http伺服器

埠只能綁定一個進程。
1 換成線程實現 SocketServer.ThreadingTCPServer
2 主進程調度分發。主進程收到埠請求後通過進程間通信讓其他進程工作。
我想要用 python 的 multiprocessing 模塊實現一個多進程多線程的 http 伺服器,伺服器會使用進程池 Pool 創建多個子進程,然後每個子進程再用 socketserver 創建多線程的 http 伺服器,但是現在我遇到一個問題,就是伺服器運行以後,只有第一個子進程可以處理 http 連接,如何做到讓每一個子進程都可以處理連接?
備註:通過 getpid 可以看到每次接受請求的都是同一個子進程
# Python 3import os, socketserver, signal, sysfrom multiprocessing import Poolclass MyTCPHandler(socketserver.BaseRequestHandler):

def handle(self):
self.data = self.request.recv(1024)
respone = b'HTTP/1.1 200 OK\r\n\r\nOK%d' % os.getpid()
self.request.sendall(respone)def httpd_task():
socketserver.ThreadingTCPServer.allow_reuse_address = True
server = socketserver.ThreadingTCPServer(('0.0.0.0', 80), MyTCPHandler) try:
server.serve_forever() except: pass
server.server_close()if __name__=='__main__':

p = Pool(4) for i in range(4):
p.apply_async(httpd_task)
p.close()
p.join()

⑨ 學會python能幹嘛 盤點python在這五個應用領域的作用

Python作為一種功能強大的編程語言,因其簡單易學而受到很多開發者的青睞。那麼,Python 的應用領域有哪些呢?概括起來,Python的應用領域主要有如下幾個,這也是學完python將要從事的相關工作。

1、Web應用開發:

Python經常被用於 Web 開發。例如,通過 mod_wsgi 模塊,Apache 可以運行用 Python 編寫的 Web 程序。Python 定義了 WSGI 標准應用介面來協調 HTTP 伺服器與基於 Python 的 Web 程序之間的通信。

不僅如此,一些 Web 框架(如 Django、TurboGears、web2py 等等)可以讓程序員輕松地開發和管理復雜的Web程序。

舉個最直觀的例子,全球最大的搜索引擎 Google,在其網路搜索系統中就廣泛使用 Python 語言。另外,我們經常訪問的集電影、讀書、音樂於一體的豆瓣網,也是使用 Python 實現的。

2、操作系統管理、自動化運維開發

很多操作系統中,Python 是標準的系統組件,大多數 Linux 發行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在終端下直接運行 Python。

有一些 Linux 發行版的安裝器使用 Python 語言編寫,例如 Ubuntu 的 Ubiquity 安裝器、Red Hat Linux 和 Fedora 的 Anaconda 安裝器等等。

另外,Python 標准庫中包含了多個可用來調用操作系統功能的庫。例如,通過 pywin32 這個軟體包,我們能訪問 Windows 的 COM 服務以及其他 Windows API;使用 IronPython,我們能夠直接調用 .Net Framework。

通常情況下,Python 編寫的系統管理腳本,無論是可讀性,還是性能、代碼重用度以及擴展性方面,都優於普通的 shell 腳本。

3、游戲開發

很多游戲使用 C++ 編寫圖形顯示等高性能模塊,而使用 Python 或 Lua 編寫游戲的邏輯。和 Python 相比,Lua 的功能更簡單,體積更小;而 Python 則支持更多的特性和數據類型。

比如說,國際上指明的游戲 Sid Meier's Civilization,就是使用 Python 實現的。

4、編寫伺服器軟體

Python 對於各種網路協議的支持很完善,所以經常被用於編寫伺服器軟體以及網路爬蟲。

比如說,Python 的第三方庫 Twisted,它支持非同步網路編程和多數標準的網路協議(包含客戶端和伺服器端),並且提供了多種工具,因此被廣泛用於編寫高性能的伺服器軟體。

5、科學計算

NumPy、SciPy、Matplotlib 可以讓 Python 程序員編寫科學計算程序。

以上都只是 Python 應用領域的冰山一角,總的來說,Python 語言不僅可以應用到網路編程、游戲開發等領域,還可以在圖形圖像處理、只能機器人、爬取數據、自動化運維等多方面展露頭角,為開發者提供簡約、優雅的編程體驗。

其實python的相關工作遠不止這些,生活中的各行各業都有python的身影,所以,學Python,是明智的選擇!

⑩ http伺服器和web伺服器是同一個伺服器二者什麼區別和聯系一定採納

http伺服器和web伺服器不巧敏是同一個伺服器,聯系:兩者都是用來處理http請求,並根據http請求返回響應數據的伺服器,區別如下:

一、指代不同

1、http伺服器:是Apache軟體基金會的一個開放源代碼的網頁伺服器。

2、web伺服器:也稱為WWW(WORLD WIDE WEB)伺服器,主要功能是提供網上信息瀏覽服務。

二、功能不同

1、http伺服器:可以在大多數電腦操孝脊枝作系統中運行,由於其具有的跨平台性和安全性,被廣泛使用。

2、web伺服器:可以解析(handles)HTTP協議。當Web伺服器接收到一個HTTP請求(request),會返回一個HTTP響應(response),例如送回野正一個HTML頁面。


三、特點不同

1、http伺服器:快速、可靠並且可通過簡單的API擴展,Perl/Python解釋器可被編譯到伺服器中,可以創建一個每天有數百萬人訪問的Web伺服器。

2、web伺服器:Web伺服器傳送(serves)頁面使瀏覽器可以瀏覽,然而應用程序伺服器提供的是客戶端應用程序可以調用(call)的方法(methods)。


熱點內容
動態規劃01背包演算法 發布:2024-11-05 22:17:40 瀏覽:849
nasm編譯器如何安裝 發布:2024-11-05 22:01:13 瀏覽:178
登錄密碼在微信的哪裡 發布:2024-11-05 22:00:29 瀏覽:737
c防止反編譯工具 發布:2024-11-05 21:56:14 瀏覽:246
安卓虛擬機怎麼用 發布:2024-11-05 21:52:48 瀏覽:342
php時間搜索 發布:2024-11-05 20:58:36 瀏覽:478
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:527
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:407
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:664
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:391