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的包。

三行代码就可以使用。

  1. import socket
  2. mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  3. 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

  1. import socket
  2. mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  3. mysock.connect(('data.pr4e.org', 80))
  4. cmd = 'GET http://data.pre4e.org/romeo.txt HTTP/1.0\n\n'.ecode()
  5. mysock.send(cmd)
  6. while True:
  7. data = mysock.recv(512)
  8. if (len(data) < 1):
  9. break
  10. print(data.decode())
  11. mysock.close()

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

  1. HTTP/1.1 200 OK
  2. Date: Sun, 14 Mar 2010 23:52:41 GMT
  3. Server: Apache
  4. Last-Modified: Tue, 29 Dec 2009 01:31:22 GMT
  5. ETag: "143c1b33-a7-4b395bea"
  6. Accept-Ranges: bytes
  7. Content-Length: 167
  8. Connection: close
  9. Content-Type: text/plain
  10. But soft what light through yonder window breaks
  11. It is the east and Juliet is the sun
  12. Arise fair sun and kill the envious moon
  13. 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. KVC,KVO详解

    Key Value Coding Key Value Coding是cocoa的一个标准组成部分,它能让我们可以通过name(key)的方式访问property, 不必调用明确的property ac ...

  2. java web请求过程

    小技巧: 1.浏览器缓存 Ctrl+F5组合键刷新页面,浏览器会直接向目标URL发送请求,而不会使用浏览器缓存,并会在HTTP请求header中增加下面的请求头来告诉服务器不使用服务器缓存 发现在re ...

  3. IP电话的配置

    内容描述:IP电话配置 问题描述: IP电话站点为8203,IP地址为10.11.6.3,电话状态为空心(不正常). 处理过程: 1.在浏览器中打开输入原先已经配置正常的IP话机的IP地址访问其配置, ...

  4. 服务器上搭建jupyter notebook

    参考:https://zhuanlan.zhihu.com/p/44405596 https://blog.csdn.net/cvMat/article/details/79351420 遇到的问题 ...

  5. python:实例属性和类属性

    由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...

  6. C#基础知识之正则表达式

    正则表达式 是一种匹配输入文本的模式..Net 框架提供了允许这种匹配的正则表达式引擎.模式由一个或多个字符.运算符和结构组成. 实例 下面的实例匹配了以 'S' 开头的单词: using Syste ...

  7. 表达式,数据类型和变量(Expressions,Data Types & Variables)

    (一)表达式: 1)4+4就是表达式,它是程序中最基本的编程指令:表达式包含一个值(4)和操作符号(+),然后就会计算出一个单独的值; 2)一个单独的值没有包含操作符号也可以叫表达式,尽管它只计算它本 ...

  8. java打印树形目录结构

    import java.io.File; public class MainTest { public static void main(String[] args) { String dirname ...

  9. python中strftime和strptime函数

    strftime和strptime函数均来自包datetime from datetime import * strftime: 将datetime包中的datetime类,按照入参格式生成字符串变量 ...

  10. css图标与文字对齐实现方法

    1.移动端(安卓设备.ios设备)图标文字垂直居中对齐的最佳常用解决方案是采用弹性盒子布局,可以快捷有效实现子元素未知高度绝对垂直居中对齐.PC端考虑到兼容性的问题,一般不推荐使用弹性盒子,依旧只能采 ...