五分钟了解python爬虫

什么是python爬虫?

python是一种编程语言,而爬虫则是一个抽象概念:我们把互联网比作一张巨大的蜘蛛网,那么爬虫就是在这张网上捕猎的掠食者,即获取资源的工具。所以python爬虫意思就是利用python语言的一些语法和功能来在html等网页中截取我们想要的信息和资源。

接下来我们用一个例子来教大家怎么获取网页上的表格信息并把它保存到本地文件夹。

第一步:导入库函数

python爬虫服务器 pythone爬虫_爬虫


大家照着写就是,需要详细了解可以自行百度

第二步:根据url获取网页源代码并整体转换成一个字符串

python爬虫服务器 pythone爬虫_入门_02


用’req.urlopen’打开网页后将内容给类文件对象webpage。

'read()'才是读取网页数据的函数,后面为什么还要加一句decode函数呢,这个decode函数是转换字符编码的,非常重要!!!

第三步:截获需要的代码段

这时候,我们就正式开始“爬取”数据了,例子里我们是要获取国防科技大学网站2017年录取分数统计的表格数据,首先我们看看这个网页全貌

python爬虫服务器 pythone爬虫_爬虫_03


嗯,你可能要问了,看了很久还是没有头绪啊?

那是当然啊,我们用爬虫获取数据是需要分析网页的源代码的,下面我们看源代码:

python爬虫服务器 pythone爬虫_入门_04


你这个时候可能又要抱怨了,这么多,怎么看啊?

不用急,我们来仔细分析一下这段代码:

我们注意到,源代码里的第一个table标签里囊括的内容就是我们要找的表格,所以我们的目的就是要从这个标记内筛选出我们想要的数据。问题是怎么筛选呢?这里就要引入正则表达式了:

正则表达式是一种用来替换原文内容的字符表达式,其实我们日常生活中也遇到过:就是在我们打开我的电脑用搜索文件时,我们可以利用*等替代我们忘记的文件名,这就是最简易的一种正则表达式。至于正则表达式详细的介绍,大家可以自行百度。下面我们接着看代码:

python爬虫服务器 pythone爬虫_爬虫_05


findall是一个re包里的内置函数,意思是从指定的一段字符里(本文中为data变量里的字符串)找到与后面括号内内容相匹配的所有字符串然后形成一个列表返回。

python爬虫服务器 pythone爬虫_python爬虫服务器_06


这个正则表达式的意思就是将table标记里的所有内容提取出来

但是,我们并不能确定这个网页里还有没有其他的表格,源代码那么长,我们也无法确定,因为这个findall函数是将所有匹配的字符串提取出来,也就是将源代码中的所有表格结构提取出来,前面说到这个findall函数返回的是一个列表,所以我们只需要第一个表格的话我们接下来就只处理table[0]了

下面的几条语句是用来做数据清理的,就是将提取出来的源代码中我们用不上的空格等删除。

第四步:缩小范围,将所要的数据提取出来

python爬虫服务器 pythone爬虫_python_07


这里我们定义了一个函数来实现提取表格内行列的功能。

首先我们将表格的所有行提取到一个列表里:

python爬虫服务器 pythone爬虫_python_08


然后建立一个循环将每行的列提取出来:

python爬虫服务器 pythone爬虫_爬虫_09


然后对每一列里的冗长的标签代码尽心筛选,提取出我们需要的表格数据,如分数:

python爬虫服务器 pythone爬虫_python_10


这段代码是提取出表格数据的关键,请仔细阅读。

实际上这段代码的思想就是定义一个左节点和右节点,利用该网页中部分标记的规律性,缩小左右节点的范围,巧妙地提取出表格的行列数据

最后用append一个个地插入到列表中输出或是写到指定的文件中即可

这个教程到这里就结束了,你学会了吗?