Python for Infomatics 第12章 网络编程一(译)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python for Infomatics 第12章 网络编程一(译),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1895字,纯文字阅读大概需要3分钟。
内容图文
注:以下文章原文来自于Dr Charles Severance 的 《Python for Informatics》
本书中的许多例子关注的是从读取文件并查找数据,但在互联网中还有许多不同信息源。
本章我们将伪装成浏览器用超文本传送协议(HTTP)从网站获取网页,通读并分析它。
12.1 超文本传送协议-HTTP
支撑网页运转的网络协议实际非常简单,在Python中内置了套接字(socket)模块,使得使用套接字创建网络连接并获取数据变得非常容易。
套接字最很像文件,可以对它进行读写,但它还提供在两个程序间进行双向连接。如果你向套接字写信息,它将把信息发送另一端程序对应的套接字上,如果你读取信息,你得到的将是对端程序发送的信息。
但是当你在对端未发送信息时去读套接字,那么你就只有坐干等了。如果两端的套接字都在接收数据而未发送数据,那么它们将等上很长一段时间。
所以程序中用于互联网通信的重要部分必须有某种协议。协议是一个定义谁先发、发的消息要干什么、怎么响应这个消息、谁接着发等的准确规则的集合。在某种意义上,两端应用程序好像在跳舞,并且确保不要踩到对方的脚趾上。
关于这些网络协议的文档有很多,超文本传送协议RFC2616链接如下:
http://www.w3.org/Protocols/rfc2616/rfc2616.txt
这个176页又长又复杂的文档有很多细节信息,如果你感兴趣你可以通读它。如果你翻看第36页,你会发现GET请求的语法。如果你仔细阅读,你会发现从一个网站请求获取一个文档,我们需要先和网站建立套接字连接,然后再发送GET请求。例如我们在80端口和www.py4inf.com服务器建立连接,然后发送以下格式的请求:
GET http://www.py4inf.com/code/romeo.txt HTTP/1.0
其中第二个参数是我们请求的网页,然后我们再发送一个空行。网页服务器将响应发送这个网页的头信息、文档内容和一个紧跟其后的空行。
12.2 世界上最简单的浏览器
也许显示HTTP协议如何工作的最简单方法就是写一个非常简单的Python程序,它将和网页服务器建立连接,并遵循HTTP协议规则,请求一个文档,然后在服务器送回后进行显示。代码如下:
import socket mysock = socket.socket(socket.AF_INET, socket.SOCKET_STREAM) mysock.connect((‘www.py4inf.com‘, 80)) mysock.send(b‘Get http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n‘)while True: data = mysock.recv(512).decode(‘utf-8‘) if (len(data) < 1): breakprint data mysock.close()
程序的输出如下:
HTTP/1.1 200 OK
Date: Fri, 22 Apr 2016 15:21:42 GMT
Server: Apache
Last-Modified: Fri, 04 Dec 2015 19:05:04 GMT
ETag: "e103c2f4-a7-526172f5b5d89"
Accept-Ranges: bytes
Content-Length: 167
Cache-Control: max-age=604800, public
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: origin, x-requested-with, content-type
Access-Control-Allow-Methods: GET
Connection: close
Content-Type: text/plain
But soft what light through yonder window breaks
It is the east and Juliet is the sun
Arise fai
r sun and kill the envious moon
Who is already sick and pale with grief
原文:http://www.cnblogs.com/zhengsh/p/5392744.html
内容总结
以上是互联网集市为您收集整理的Python for Infomatics 第12章 网络编程一(译)全部内容,希望文章能够帮你解决Python for Infomatics 第12章 网络编程一(译)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。