Coursera课程《Using Python to Access Web Data》 密歇根大学

Week3 Networks and Sockets

12.1 Networked Technology

Transport Control Protocol(TCP)

TCP端口就是为TCP协议通信提供服务的端口。TCP(Transmission Control Protocol),TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。

在计算机网络OSI模型中,它完成第四层传输层所指定的功能。我们的电脑与网络连接的许多应用都是通过TCP端口所实现的。

TCP Connections / Sockets

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

TCP Port Numbers

端口(port)是特定应用或特定程序之间软件交流的终点。它允许多种网络应用同时存在于同一服务。

一些TCP的端口号如下。

Common TCP Ports

  • Telnet(23) - Login
  • SSH(22) - Secure Login
  • HTTP(80)
  • HTTPS(443) - Secure
  • SMTP(25)(Mail)
  • IMAP(143/220/993) - Mail Retrieval
  • POP(109/110) - Mail Retrieval
  • DNS(53) - Domain Name
  • FTP(21) - File Transfer

Sockets in Python

Python有内置的支持TCP Sockets的包。

三行代码就可以使用。

import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org',80))

其中'data.pr4e.org'是host,80是port。

12.2 Hypertext Transfer Protocol(HTTP)

HTTP - Hypertext Transfer Protocol

超文本传输协议(HTTP,Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

HTTP也就是一系列的规定,来使得浏览器通过网络上的服务来获取网络文档。

对于我们一个网址来说,比如http://www.dr-chuck.com/page1.htmhttp://是protocol,www.dr-chuck.com是host,而/page1.htm是document。

Getting Data From The Server

每个用户切换网页时,浏览器都建立一个到网页服务器的连接,然后做一个"GET"的请求,以此来获得特定URL的网页内容。

服务器返回HTML的文档给浏览器,然后浏览器将其进行重新排版及显示。

Internet Standards

这些网络协议的标准都是由一个民间组织——互联网工程任务组(Internet Engineering Task Force, IETF)制定的。

而这些标准称为Request for Comments(RFCs)。

Telnet

Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

An HTTP Request in Python

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pre4e.org/romeo.txt HTTP/1.0\n\n'.ecode()
mysock.send(cmd) while True:
data = mysock.recv(512)
if (len(data) < 1):
break
print(data.decode())
mysock.close()

而在进行上面的循环,传输回来的内容是这样的

HTTP/1.1 200 OK
Date: Sun, 14 Mar 2010 23:52:41 GMT
Server: Apache
Last-Modified: Tue, 29 Dec 2009 01:31:22 GMT
ETag: "143c1b33-a7-4b395bea"
Accept-Ranges: bytes
Content-Length: 167
Connection: close
Content-Type: text/plain But soft what light through yonder window breaks
It is the east and Juliet is the sun
Arise fair sun and kill the envious moon
Who is already sick and pale with grief

其中第一段是HTTP Header,第二段是HTTP Body

《Using Python to Access Web Data》 Week3 Networks and Sockets 课堂笔记的更多相关文章

  1. Python Web-第二周-正则表达式(Using Python to Access Web Data)

    0.课程地址与说明 1.课程地址:https://www.coursera.org/learn/python-network-data/home/welcome 2.课程全名:Using Python ...

  2. 【Python学习笔记】Coursera课程《Using Python to Access Web Data》 密歇根大学 Charles Severance——Week6 JSON and the REST Architecture课堂笔记

    Coursera课程<Using Python to Access Web Data> 密歇根大学 Week6 JSON and the REST Architecture 13.5 Ja ...

  3. 【Python学习笔记】Coursera课程《Using Python to Access Web Data 》 密歇根大学 Charles Severance——Week2 Regular Expressions课堂笔记

    Coursera课程<Using Python to Access Web Data > 密歇根大学 Charles Severance Week2 Regular Expressions ...

  4. 《Using Python to Access Web Data》 Week5 Web Services and XML 课堂笔记

    Coursera课程<Using Python to Access Web Data> 密歇根大学 Week5 Web Services and XML 13.1 Data on the ...

  5. 《Using Python to Access Web Data》Week4 Programs that Surf the Web 课堂笔记

    Coursera课程<Using Python to Access Web Data> 密歇根大学 Week4 Programs that Surf the Web 12.3 Unicod ...

  6. Python Web-第三周-Networks and Sockets(Using Python to Access Web Data)

    1.Networked Programs 1.Internet 我们现在学习Internet部分,即平时我们浏览器做的事情,之后再学习客服端这部分 2.TCP 传输控制协议 3.Socket HTTP ...

  7. Python Web-第六周-JSON and the REST Architecture(Using Python to Access Web Data)

    1.JavaScript Object Notation JSON 1.JSON 官方介绍 http://www.json.org/json-zh.html 2.json1.py import jso ...

  8. Python Web-第五周-Web Services and XML(Using Python to Access Web Data)

    1.Web Service Overview 1.Data on the Web Python Dictionary 和 Java HashMap间需要建立一个桥梁,可以用XML或是JSON 2.XM ...

  9. Python Web-第四周-Programs that Surf the Web(Using Python to Access Web Data)

    1.Understanding HTML 1.最简单的爬虫 import urllib fhand=urllib.urlopen('http://www.dr-chuck.com/page1.htm' ...

随机推荐

  1. 解决nodejs环境下端口号被占用的方法

    假设被占用的端口号是8081 1.进入cmd命令窗口 输入netstat -ano|findstr "8081" cmd窗口给我的信息尾部有一个和端口8081对应的PID值 '51 ...

  2. vue中获取滚动table的可视页面宽度,调整表头与列对齐(每列宽度不都相同)

    mounted() { // 在mounted中监听表格scroll事件 this.$refs.scrollTable.addEventListener( 'scroll',(event) => ...

  3. 时间戳转换日期格式 - Vue

    日常开发中经常会遇到时间相关的问题,服务端返回的数据都是以时间戳的方式,那么需要将其处理转化为对应的时间格式,具体方式如下: 一.filters 中 formatDate 方法实现 <scrip ...

  4. Docker 安装、卸载、启动、停止

    1.1 查看当前系统的内核版本 查看当前系统的内核版本是否高于 3.10 英文文档:https://docs.docker.com/ 中文文档:https://docs.docker-cn.com/  ...

  5. 学习R的悬疑录(不定期更新)

    在使用caret包建模时候,没有导入机器学习包,如rpart.randomForest等,并不会对结果有影响.不知道是不是caret包内置了机器学习模块. # 加载r包 library(data.ta ...

  6. Qt和其它GUI库的对比

    http://c.biancheng.net/view/3876.html 世界上的 GUI 库多如牛毛,有的跨平台,有的专属于某个操作系统:有的只有 UI 功能,有的还融合了网络通信.多媒体处理.数 ...

  7. 03python面向对象编程1

    1.创建和使用类 1.1 创建 Dog 类.根据 Dog 类创建的每个实例都将存储名字和年龄.我们赋予了每条小狗蹲下( sit() )和打滚( roll_over() )的能力: In [2]: cl ...

  8. Codeforces 矩阵题 题单

    Matrix CF 166E Tetrahedron dp方程设为 f[i] 最后在 D点,g[i] 表示最后不在D点.最后 g[] 可以通过矩阵加速数列求得,数据可以强化,复杂度 \(O(logn) ...

  9. AngularJS中forEach的用法

    AngularJS中当我们需要遍历某个数组的时候,我们会用到forEach语法.AngularJS中forEach的用法如下: angular.forEach(array,function(obj,i ...

  10. flask-migrate的使用

    先安装flask-migrate:pip install flask-migrate 然后见代码: 输入命令生成migrates文件夹 然后可以看到项目下生成文件夹: 然后输入命令: 看到: 总之,模 ...