继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第7天 Python的网络编程

小白兔1215
关注TA
已关注
手记 55
粉丝 3
获赞 2

课程名称Python3 进阶教程(新版)
章节名称第7章 Python的网络编程
讲师名称咚咚呛

课程内容

  • 套接字Socket与套接字编程
  • 自带的HTTP服务器
  • 发送HTTP请求
  • requests库
  • HTTP响应内容

学习收获

套接字Socket与套接字编程

要进行网络通信,需要建立起通信双方的连接,连接的双方分别称为客户端和服务端,在Python中,使用套接字socket来建立起网络连接。

对于客户端和服务端,都是使用socket来建立连接的,但是在使用行为上,客户端和服务端会有一些不一样。

服务端建立需要四个步骤:

  1. 新建socket
  2. 绑定IP和端口(bind)
  3. 监听连接(listen)
  4. 接受连接(accept)
import socket

server = socket.socket() # 1. 新建socket
server.bind(('127.0.0.1', 8999)) # 2. 绑定IP和端口(其中127.0.0.1为本机回环IP)
server.listen(5) # 3. 监听连接
s, addr = server.accept() # 4. 接受连接
print('connect addr:{}'.format(addr))
content =s.recv(1024)
print(str(content, encoding='utf-8'))  # 接受来自客户端的消息,并编码打印出来
s.close()

客户端建立则简单一些,仅需两个步骤:
1、新建socket
2、连接服务端(connect)

import socket

client = socket.socket() # 1. 新建socket
client.connect(('127.0.0.1', 8999)) # 2. 连接服务端(注意,IP和端口要和服务端一致)
client.send(bytes('Hello World. Hello Socket', encoding='utf-8')) # 发送内容,注意发送的是字节字符串。
client.close()

当网络连接上以后,客户端和服务端就可以进行数据通信了,套接字通过send()函数发送数据,通过recv()函数接收数据。

自带的HTTP服务器

在互联网的世界中,网页、手机H5等都是通过HTTP向用户提供服务的,这些信息存储在HTTP服务器中,HTTP服务器是一种特殊的Socket服务器,它在网络连接之上,定义了HTTP协议,使得网页、手机H5等数据,都可以以标准的HTTP协议进行传输。

Python提供了简易的HTTP服务器,可以直接运行起来。在终端,输入这条命令,就可以启动一个HTTP服务器。

python -m http.server

python -m http.server 9999 -d /user # 指定端口和根目录

发送HTTP请求

Python提供了相关的库urllib,通过urllib包里面的request,可以向其他HTTP服务器发起请求。

from urllib import request

response = request.urlopen('http:127.0.0.1:8000')

print(response.status)

for k,v in response.getheaders():
    print('{}:{}'.format(k,v))

requests库

requests库是著名的Python第三方库,使用requests库,可以定制化你的HTTP请求,包括请求方法,请求参数等等。

在一般的使用上,requests和urllib没有太大区别,但是在复杂的场景中,requests可以提供urllib无法提供的强大功能。因此,在使用上,建议使用requests库代替urllib库来进行HTTP请求等的操作。

由于requests是第三方库,因此在使用前,需要安装。

pip install requests

请求示例

response = requests.get('https://www.imooc.com')
# 打印状态码
print(response.status_code)
# 打印回应头
print(response.headers)

HTTP响应内容

网络爬虫是典型的应用程序,它的工作原理就是通过不断的请求互联网的页面,并从回应中解析获取出有用的数据;数据积累后,可以有很多用处。

import requests

response = requests.get('https://www.imooc.com')
content = str(response.content, encoding='utf-8') # ==> 打印具体内容

content_list = content.split('\n') # 分行
len(content_list) # 打印页面内容的行数

for line in content_list:
    if 'href' in line:
        print(line.strip())

打卡截图

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP