创建出具有域名切换,信息采集以及信息存储功能的爬虫。在思考“网络爬虫”时的通常的想法:通过网站域名获取HTML数据,根据目标信息解析数据,存储目标信息,如果有必要,移动到另一个网页重复这个过程。
在网页浏览中,网络浏览器是一个非常有用的应用,它创建信息的数据包,发送它们,然后把你获取的数据解释成漂亮的图像、声音、视频和文字。但是,网络浏览器就是代码,而代码时可以分解的,可以分解成许多基本组件,可重写、重用,以及做成我们想要的任何东西。网络浏览器可以让服务器发送一些数据,到那些对接无线(或有线)网络接口的应用上,但是python也有实现这些功能的库文件。
下面是python实现浏览器的代码
from urllib.request import urlopen
html=urlopen("http://pythonscraping.com/pages/page1.html")
print(html.read())
执行该段代码后,结果如下图:
注意,此处因为服务器上安装了多个版本的python,使用python3来使用3.5.4版本的python。执行结果输出了http://pythonscraping.com/pages/page1.html这个网页的全部HTML代码。更准确地说,这会输出在域名为http://pythonscraping.com的服务器上<网络应用根地址>/pages文件夹里的HTML文件page1.html的源代码。
from urllib.request import urlopen
这段代码的含义是:它查找python的request模块(在urllib里面),只导入一个urlopen函数。这边注意一个python版本的差异。如果你使用过python 2.x里的urllib2库,可能会发现urllib2与urllib有些不同。在Python 3.x里,urllib2改名为urllib,被分成了一些子模块:urllib.request、urllib.parse和urllib.error。尽管函数名称大多数和原来一样,但是在用新的urllib库时需要注意哪些函数被移动到子模块里了。
urllib是python的标准库,包含了网络请求数据、处理cookie、甚至改变请求头和用户代理这些元数据的函数。网络爬虫中将大量使用urllib。urlopen用来打开并读取一个从网络远程获取的远程对象。因为它是一个非常通用的库,可以轻松读取HTML文件、图像文件、或者其他任何文件流。
至此,你已经完成一个最基本的网络爬虫,获取到了对应页面的信息