标签:对象 htm int http协议 如何 响应头 数据 nec 面试题
- 提高并发:买电脑->写程序->开进程->开线程->单线程
浏览器本质,socket客户端遵循Http协议
HTTP协议本质:通过\r\n分割的规范+ 请求响应之后断开链接 == > 无状态、 短连接
具体:
Http协议是建立在tcp之上的,是一种规范,它规范定了发送的数据的数据格式,然而这个数据格式是通过\r\n 进行分割的,请求头与请求体也是通过2个\r\n分割的,响应的时候,响应头与响应体也是通过\r\n分割,并且还规定已请求已响应就会断开链接 -----即---> 短连接、无状态
url = ‘www.cnblogs.com‘ sk = socket.socket() # 连接的过程是:阻塞 sk.connect((url,80)) # HTTP协议 content = "GET /wupeiqi HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36\r\n\r\n" %url sk.sendall(content.encode(‘utf-8‘)) # 等待服务端返回内容:阻塞 data = sk.recv(8096) print(data) sk.close()
目标:用于监听多个socket对象是否发生变化。
import select while True: # 让select模块帮助我们去检测sk1/sk2两个socket对象是否已经发生“变化” # r=[] # 如果r中有值 # r=[sk1,] 表示:sk1这个socket已经获取到响应的内容 # r=[sk1,sk2] 表示:sk1,sk2两个socket已经获取到响应的内容 # w=[],如果w中有值 # w=[sk1,], 表示:sk1这个socket已经连接成功; # w=[sk1,sk2],表示:sk1/sk2两个socket已经连接成功; r,w,e = select.select([sk1,sk2],[sk1,sk2],[],0.5)
1. 什么是异步非阻塞?
2. Http协议是什么?
3. 如何提高爬虫的并发?
- 进程
- 线程
标签:对象 htm int http协议 如何 响应头 数据 nec 面试题
原文地址:https://www.cnblogs.com/jassin-du/p/9017813.html