python的http服务器
① 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)。