1、什么是爬虫?
爬虫是一种自动访问互联网,并提取数据的一个程序。归根结底,所谓爬虫,不过是我们用Python语言编写的一个小程序而已。
针对的问题:有些网页需要我们登陆后才能访问,而有些网页则不需要。动态登陆页面由Ajax异步加载实现,往往针对此类页面的抓取较为复杂。本例只是针对于一些不需要登录的静态网页的抓取。
2、实现一个简单的爬虫,需要以下几个方面:
(1)、 爬虫的调度端:用来启动爬虫、终止爬虫或监视爬虫的运行情况。
(2)、 URL管理器:来对将要爬取的URL和已经爬取过的URL进行管理。从URL管理器中我们可以取得一个待爬取的URL将其传送给网页下载器。
(3)、 网页下载器:将指定的URL下载下来,存储为一个本地文件或字符串。这个字符串或本地文件(其实还是一个字符串)将会被传送给网页解析器进行解析。
(4)、 网页解析器:网页解析器能解析出网页中有价值的数据信息,并且每一个网页中又包含了许多指向其他网页的URL,这些URL被解析出后,可以补充到我们的URL管理器中。
URL管理器、网页下载器和网页解析器形成一个循环,只有有相关联的URL存在,便可以一直运行下去。
这个简单的爬虫程序的运行过程是怎样的呢,我们可以简单的看一下。
这里用的是慕课网上一个老师的演示文档。
Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。
Soup.find(参数1,参数2,参数3)方法。
Soup.findAll(参数1,参数2,参数3)方法。
两者的参数是一样的,find方法,只会搜索出满足第一个要求的节点,findAll方法会搜索出所有满足要求的节点。搜索到节点之后,我们就可以访问节点的名称、属性和文字。
我们在搜索时,我们可以通过节点的名称进行搜索,也可以通过节点的属性和文字进行搜索。
================================================================
urllib和urllib2。
urllib可以用来提供了urllib.urlretrieve(url,path,callBackFunc)方法,可以将远程服务器上的资源下载到本地。
urllib2可以用来接受Request对象作为参数,从而可以控制HTTP Request的header部。但是有些功能模块却是只有urllib独有,所有我们经常可以看到urllib与urllib2共存在一个项目中。
本例中,所有的代码均为个人纯手打,如有雷同,纯属巧合。先附上一张程序运行的效果图。(不能超过2M,真恼人!)
详细代码如下:
# -*- coding: cp936 -*-
from bs4 import BeautifulSoup