目录
1.1 网络连接
的确,网络浏览器是一个非常有用的应用,它创建信息的数据包,发送它们,然后把你获取的数据解释成漂亮的图像、声音、视频和文字。但是,网络浏览器就是代码,而代码是可以分解的,可以分解成许多基本组件,可重写、重用,以及做成我们想要的任何东西。网络浏览器可以让服务器发送一些数据,到那些对接无线(或有线)网络接口的应用上,但是许多语言也都有实现这些功能的库文件。
让我们看看
Python
是如何实现的:
from urllib.request import urlopen
html = urlopen("http://www.pythonscraping.com/pages/page1.html")
print(html.read())
这将会输出http://www.baidu.com这个网页的全部HTML代码。
更准确地说,这会输出在域名为http://www.baidu.com
的服务器上
<
网络应用根地址
>/
pages
文件夹里的
HTML
文件
page1.html
的源代码。
有什么区别?现在大多数网页需要加载许多相关的资源文件。可能是图像文件、JavaScript文件、
CSS 文件,或你需要连接的其他各种网页内容。当网络浏览器遇到一个标签时,比如
<img src="cuteKitten.jpg">
,会向服务器发起另一个请求,以获取
cuteKitten.jpg 文件中的数据为用户充分渲染网页。但是,我们的
Python 程序没有返回并向服务器请求多个文件的逻辑,它只能读取我们已经请求的单个
HTML
文件。
那么我们应该怎样做呢?幸好
Python
语法接近正常英文,下面这行代码
from urllib.request import urlopen
其实已经显示了它的含义:它查找
Python
的
request
模块(在
urllib 库里面),只导入一个urlopen
函数。
urllib
是
Python 的标准库(就是说你不用额外安装就可以运行这个例子),包含了从网络请求数据,处理
cookie,甚至改变像请求头和用户代理这些元数据的函数。我们将在本书中广泛使用
urllib
,所以建议你读读这个库的
Python
文档(https://docs.python.org/3/library/urllib.html
)。
urlopen 用来打开并读取一个从网络获取的远程对象。因为它是一个非常通用的库(它可以轻松读取