您的当前位置:首页基于Python的网络爬虫技术

基于Python的网络爬虫技术

2022-03-11 来源:小侦探旅游网
ELECTRONICS WORLD・技术交流基于Python的网络爬虫技术

辽宁师范大学计算机与信息技术学院 陈 乐

【摘要】本文首先介绍了网络爬虫的主要内容,包括网络爬虫的概念、架构和基本流程,紧接着详细分析了基于Python的网络爬虫技术,希望对有关学习者有所帮助。

【关键词】网络爬虫;Python技术

1 引言当今时代是大数据的时代,各个领域都离不开数据的支持。快速搜索数据并且充分利用数据信息,成为了一个巨大的挑战。为了解决这些难题,网络爬虫技术应运而生。使用网络爬虫技术可以快速提取数据,提高数据检索质量。

2 网络爬虫技术2.1 网络爬虫技术的基本概念

网络爬虫又称网络蜘蛛,或者网络机器人。它是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。[1]换句话来说,它可以根据网页的链接地址自动获取网页内容。如果把互联网比做一个大蜘蛛网,它里面有许许多多的网页,网络蜘蛛可以获取所有网页的内容。2.2 网络爬虫架构

网络爬虫架构主要由三个部分组成:网络爬虫调度端(负责开启网络爬虫主程序);网络爬虫主程序;目标数据(抓取有价值数据)。

网络爬虫主程序分为3个部分:

(1)Url管理器:管理Url,包括已经爬取过的Url和待爬的Url。

(2)网页下载器:根据Url地址,将网页下载保存到本地,存储为字符串。

(3)网页解析器:将存储的字符串中有价值的数据进行解析。

2.3 网络爬虫架构流程

爬虫系统调度段询问Url管理器,从一个Url或者多个Url开始,将他们放在“待抓取”的Url队列中,系统按照一定的顺序从队列中取出Url地址,将其传送给网页下载器并下载网页内容,调度端接收到网页下载的内容后,将网页内容发送给网页解析器,抓取想要的内容。[2]在抓取的过程中,爬虫还会碰到Url,在已经下载的Url队列中检查,如果没有被抓取过,确认是新的Url,则放到Url队

列末尾,等待抓取。上面过程是循环往复进行的,直到“待抓取”

的Url队列为空,停止抓取。

3 基于Python的网络爬虫分析

3.1 Python语言的优越性

(1)方便简单,容易上手。Python几乎能在所有的操作系统上运行,很容易上手,初学者可以快速适应。

(2)Python是一个广泛使用的脚本语言,其自带了urllib、url-lib2等爬虫最基本的库,可以抓取Url的内容。[3]

(3)Python擅长处理字节流的各种模式,具有很好的开发速

度。

3.2 Python网络爬虫模块3.2.1 Url管理模块

Url管理模块的作用是管理Url,包括已经被抓取的Url集合和还未被抓取的Url集合。Url管理模块可以有效预防重复抓取循环抓取的问题。

Python中实现网址管理有三种途径:

(1)存储在内存中,针对于Url数据较少的情况。在Python中用Set()集合加以实现,Set()可以消除重复数据,避免重复抓取的问题。

(2)存储在关系数据库,实现永久存储。建立Url表,该表中有两个字段,一个字段是Url地址,另一个字段用来表示Url是否被抓取。(3)存储在缓存数据库redis中,针对于Url数据较多的情况下。也可以用Set()集合来实现,来存取“待爬”的Url地址和“已爬”的Url地址。3.2.2 网页下载器

网页下载器将Url对应的网页下载到本地,将其存储为字符串,以便接下来对数据进行处理。

Python支持的网页下载工具有两种:

Python自身携带的urllib2模块。urllib2针对于简单的网络爬虫,能够完成网页下载,提交用户数据,代理访问,客户登录等多种功能。下面是简单的网络爬虫代码(以百度为例):

(下转第165页)

• 163 •

ELECTRONICS WORLD・技术交流单,实用性较强的优点。

图5 实验实物图

图4 软件开发界面

参考文献

5 实验结果及总结[1]郑娴,姚铭.智能家庭网络的研究现状与发展趋势[J].住宅科技,2006.

当人体靠近时,热释电传感器就会接收到相应的红外信号,当拨动震动传感器,在两个传感器的共同作用下,可以看到控制相应的继电器得电,控制信号相应的传送到手机端。通过手机APP发送开关信号,可看到现场继电器动作,其实验实物图如图5所示。最终通过实验验证了设计的可行性。该本设计具有操作简

[2]薛震南.基于物联网的智能家居研究[D].南京大学,2013.

作者简介:

马昭(1990—),男,硕士,主要研究方向:电力电子装置。

(上接第163页)

import urllib2

response.urllib2.urlopen(“http://www.baidu.com”)print response.read()

在这个例子中,我们首先调入urllib2库中的url.open()方法,传送百度的url,返回一个response对象,调入response对象的read()方法,返回获取的网页内容,并打印.。

第三方工具包—request,request的功能比较强大,属于第三方插件。

3.2.3 网页解析器

网页解析器用来从网页中提取从最初想要的数据。实则上提取的是两部分:(1)Url列表;(2)目标数据。

Python中的网页解析器有两种类型:

(1)利用正则表达式。正则表达式将网页当作字符串来处理,只适用于简单的网页。一般网页较为复杂时,不采用此类方法。(2)基于网页的DOM结构。DOM树是一种树形标签结构。网页解析器会将HTML文档当成DOM树,对其进行上下级结构的遍历来提取有用信息。使用树形结构可以对网页中的具体信息来进行定位,定位到具体的某个节点、属性等。其中BeautifulSoup解析器功

能强大,更为盛行。BeautifulSoup利用find_all()和find()方法来搜索节点,find_all()可以查找所有符合查询条件的标签节点,并返回一个列表。find()方法查找符合查询条件的第一个标签节点。用这两种方法搜索节点,提取有价值信息。

4 结语

在大数据时代,网络爬虫技术可以有效准确地抓取目标数据,可以为我们节省大量的资源,对信息检索起着十分重要的作用。基于Python的网络爬虫技术,具有很高的前瞻性,有一定的研究价值。参考文献

[1]爬虫学习之一个简单的网络爬虫[OL].https://www.cnblogs.com/chenkun/p/5653459.html.

[2]Mark Lutz.Learning Python[M].北京:机械工业出版总社,2009.[3]钱程,阳小兰,朱福喜.基于Python的网络爬虫技术[J].黑龙江科技信息,2016(36).

• 165 •

因篇幅问题不能全部显示,请点此查看更多更全内容