基于Python的网络爬虫技术研究
2020-07-04商红宇葛苏建
商红宇 葛苏建
摘要:在大数据时代,越来越多的公司企业开始注意到数据的价值,开始从自有数据或者网络数据种提取数据,并进行数据变现,发掘数据的价值。网络爬虫技术在此时代得到了长足发展,但是也有大量恶意爬虫充斥网路,导致网络瘫痪、公司利益受损。为了了解确保高性能的同时又不给被爬取网站服务器带来巨大压力的网络爬虫的设计规范,本文研究了网络爬虫的工作流程,设计了一个基于Python的爬取豆瓣电影数据的网络爬虫。提出了现阶段网络爬虫面临的挑战和恶意爬虫的危害,同时网络爬虫应遵守我国相关的法律规范。
关键词:爬虫;Python;大数据
一、研究背景
在这个大数据时代,人工智能蓬勃发展的时代,不论是研究领域还是工程领域,数据已经是必不可少的一部分。现代数据挖掘、神经网络、深度学习等尖端领域所依赖的也是数据。数据成为了大数据时代的根基,而获取数据的途径很大程度上是依赖网络爬虫。作为搜索引擎的核心组成模块,网络爬虫在信息检索过程中有着举足轻重的地位。
HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。
我们在浏览器中URL,回車之后便会在浏览器中观察到页面内容。实际上这个过程是浏览器向网站所在服务器发送了一个请求,网站服务器在接收到这个请求后进行解析处理,然后返回对应响应,接着响应传回浏览器。响应包含页面源代码、数据包信息等,浏览器对其进行解析处理,然后将网页呈现出来。
二、网络爬虫技术的研究
把互联网看作一张大网,那么数据就是这张大网上的一个个交错节点,而爬虫就是在这张网上爬行的蜘蛛。网络爬虫还有其他的名字,比如网络蜘蛛、网络机器人等。本章将介绍网络爬虫的基本原理,并设计实现一个基于Python的网络爬虫,阐述网络爬虫面临的挑战。
(一)网络爬虫基本原理
爬虫可以简单概括为采集网页并保存信息的自动化程序。互联网用户主要通过两种方式来获取网络中的相关数据信息,一种是对浏览页输入相应请求,并下载网页代码,通过技术解析后形成所需信息界面;另一种是发送请求至模拟浏览器,请求的相关数据被提取和存放到数据库中,爬虫则是所有自动化获取网络数据的总称。
(二)网络爬虫的实现
在写爬虫之前,我们先来看一下网站的robots.txt文件。从这份文件中,我们可以看到:User-agent: *,这是指的所有的爬虫,它下面的Disallow后面的所有的网站目录都不允许爬。# Crawl-delay: 5这是说的是爬虫的延时,不能太快,不然会增加豆瓣服务器的负担。我们在浏览器里用眼睛看到了我们想要的东西,电影信息,电影海报,这是我们需要的,眼睛能看到的信息都可以采集,所谓“所见即所得”。
确定了爬取目标之后就是进行网页的下载,因为豆瓣电影是静态页面,所以源代码里包含了网页上信息,只要把源代码下载下来就可以提取信息了。
爬虫只需要对豆瓣网站服务器发送对应的GET请求,即可以得到页面的源代码。在获取页面时,并没有遇到信息丢失的问题,也就是豆瓣电影并没有使用诸如Ajax、JavaScript等技术来实现动态加载。
详情页链接在
在得到了页面的地址后,存在队列里然后接下来处理他们。把每一部电影的详情页都爬取下来进行数据提取了。爬取详情页的方法与爬取排行榜的方法相同。网页的结构有一定的规则,根据特殊的节点属性、CSS选择器、Xpath等技术手段可以精准定位信息位置,以此来提取数据。信息提取可以使数据从杂乱无章,变得条理清晰,以便后续使用和处理。
响应获取后,函数返回的是一个Beautiful Soup对象。详情页的信息提取是爬虫中最重要也是最难的一步,这里函数利用Beautiful Soup从html中提取信息,Beautiful Soup虽然操作简单,功能强大,但其解析速度并不算快。
一般爬虫会将数据保存到数据库中。虫除了可以下载文字信息,也可保存图片信息,电影海报下载函数使用了urllib库进行图片保存。
(三)网络爬虫技术的挑战
早期互联网的开放性高,数据获取难度小。随这各大公司对数据资产的日益看重,获取数据的难度越来越大,虽然爬虫技术在大数据时代得到了蓬勃发展,但是依然面临着反爬技术的水平不断提高、爬虫的法律限制以及用户隐私带来的挑战。恶意爬虫指的是使用技术手段,以服务器承受不住的速度达到快速爬取而导致被爬取对象利益受损、用户隐私数据泄露和导致网络瘫痪的爬虫行为。
参考文献:
[1]张艳,吴玉全.基于Python的网络数据爬虫程序设计[J].电脑编程技巧与维护,2020(04):26-27.
[2]孙建言,马雨欣,武文杰.基于Python的网络爬虫系统[J].电脑知识与技术,2019,15(26):61-63.
[3]黎曦. 基于网络爬虫的论坛数据分析系统的设计与实现[D].华中科技大学,2019.