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. vue data数据变化 页面数据不更新问题

    问题: <template> <div class="container"> <div v-for="(item, index) in ar ...

  2. logname - 显示用户登录名

    总览 (SYNOPSIS) logname [OPTION]... 描述 (DESCRIPTION) 显示 当前用户 的 名字. --help 显示 帮助信息, 然后 结束. --version 显示 ...

  3. 关于jsp 获得当前绝对路径的方法

    方法1) request.getRequestURL(); 方法2)  request.getScheme()+"://"+request.getServerName()+&quo ...

  4. vi文本编辑器的使用

    1.1.模式 编辑模式 输入模式 末行模式 1.2.常用命令 vi file 直接打开,不能修改,光标在行首 vi +n file 直接打开,不能修改,光标在第n行 vi + file 直接打开,不能 ...

  5. python json、pickle

    文章部分转自:https://www.cnblogs.com/lincappu/p/8296078.html json:用于字符串和Python数据类型间进行转换pickle: 用于python特有的 ...

  6. Netty学习--第一章 JDK自带的BIO

    一.什么是BIO BIO是传统的通信技术,在BIO通信模型中,客户端发送请求给服务器,服务器每次都是会单独创建一个线程来监控客户端的请求,会为每个客户端创建一个线程来处理请求.当前服务器处理完成后,通 ...

  7. NOIP2019(CSP2019) 游记

    NOIP2019(CSP2019) 游记 近一年的似乎也就是感觉比别的学校的同学水平低的不止一点,到现在也没有搞清楚大概应该怎么科学有效的练习,并不会思考"为什么想不到"和&quo ...

  8. bzoj5089 最大连续子段和 分块+复杂度分析+凸包

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5089 题解 本来打算迟一点再写这个题解的,还有一个小问题没有弄清楚. 不过先写一下存个档吧. ...

  9. Java 学习输入1234 求和

    输入任何整数都能求和 import java.util.Scanner; /** * @author 作者anil E-mail:888@yirose.com * @date 创建时间:2017年3月 ...

  10. java:在Conllection接口中实际上也规定了两个可以将集合变成对象数组的操作

    在Conllection接口中实际上也规定了两个可以将集合变成对象数组的操作 //在Conllection接口中实际上也规定了两个可以将集合变成对象数组的操作 List<String> a ...