基于Python爬虫技术实现

  • 格式:pdf
  • 大小:1.80 MB
  • 文档页数:4

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2019.09

1概述

这是一个快速变化的时代,这是一个信息膨胀最快

的时代。数据围绕着人们的日常生活,在这个人人都离不开互联网的时代,人们对信息获取要求越来越高,内容也五花八门。当微信上传播一条被广泛关注的信息时,瞬间就会被几十万甚至几百万的网友所获取和转播,其信息推广速度和推广范围远远超过传统媒体。一分钟之内会发生什么?通过对2018年的数据进行分析,得出的结果相当惊人:谷歌搜索次数达到370万次,电子邮件发送量达到1.87亿封,电商平台花费达到86.28万美元。每天不断产生的各种各样的信息,虽然已经有了像Google、百度这样优秀的通用搜索引擎,但却不能适用所有的情况和需要。对学术搜索来说,一个合理的结果显示和排序是非常重要的。

2

网络爬虫的实现应用及相关技术

2.1爬虫的应用场景

在现实生活中,一直都在使用爬虫这门技术,常用的搜索引擎的百度、谷歌等。除此之外,还有其他

数据需求,当爬取数据、分析数据时,就会借助网络爬虫技术。

如在淘宝上买一部新手机,预计一个价位,再针对符合条件的手机进行分析,看网友评价和市场反馈,最终确定符合要求的手机。如表1所示。2.2反爬虫技术

基于Python 的网络爬虫,在Python 语言强大的支

撑下,使得网络爬虫拥有所见即所爬的强大功能。这便是现在数据被盗取情况泛滥的主要原因之一。为保护网站服务器不被群体爬虫所攻击,防止服务器数据被盗,有些网站增加了反爬虫技术。如图1、图2所示。

基于Python 爬虫技术实现

望江龙,王晓红*

(武汉商学院信息工程学院,武汉430056)

要:随着科技时代的飞快发展,使用技术和创新来搜索数据,是大数据研究的方向。基于Python 的网络爬虫提取数据是目前使用频率较高的一种技术方式,Python 语言简洁、开发速度快、可以跨平台的特点,通过第三方request 库对网页进行获取返回值的内容。通过Python 3种筛选方式对网页中的数据进行快速的匹配。使用正则、XPath 和Beautiful Soup 这3种筛选技术对某个网页中的图片和文字进行提取。这样不仅能很精准地找到网页中所需数据,而且能自动快速地将这些数据永久地保存下来,大大减少寻找数据的时间。当爬虫技术的不断优化,功能也越来越强,数据盗取情况日益严重,很多网站采用了反爬虫技术,因此正常的数据搜集需要一定的反反爬虫技术手段。关键词:Python

语言;第三方库;反反爬虫;网络爬虫技术;数据提取;数据处理

表1在某电商平台上按照用户需求筛选出来的信息

作者简介:望江龙(2000-),男,研究方向:数据提取;王晓红(1969-),女,通讯作者,硕士,副教授,

研究方向:计算机模式识别、图像识别等。收稿日期:

2019-06-04

图1

爬虫被反爬虫拦截

图2无法获取网页的源代码

18

当人们为爬虫定制请求Headers,并向服务器发送一次请求,可避开反爬虫拦截。代码及结果如下: headers={"User-Agent":"Mozilla/5.0(Windows NT10.0;Win64;x64)"

"AppleWebKit/537.36(KHTML,like Gecko)"

"Chrome/73.0.3683.86Safari/537.36"}

res=requests.get(url,headers=headers)

获取服务器响应(避开反爬虫):

Process finished with exit code0

2.3数据提取

关于数据提取,首先确定数据存放位置,找到数据时能顺利提取。在浏览网页时,网页上的各种元素都是由数据组成,需要从Web网页中把所需内容提取出来。HTML网页是按DOM树的模型编写的,DOM是被视为节点树的HTML。

在HTML DOM树中,网页源代码分为head和body 两部分,信息大多存放body里。对于在body中可见的资源,要做的基本步骤:

(1)通过网络爬虫获取整个网页源代码。

(2)对其中body内容进行遍历。

(3)在body中提取数据,记下数据所在的标签,如

(4)在精准定位之后,利用Python中可用的3种筛选技术对数据进行筛选并保存。

(5)对不同数据,进行相应文件格式保存。2.4数据结构化存储

结构化数据通常指的是行数据,存储在数据库里,然而,数据库太大而不能存入内存。有以下两种结构化数据的方法:

(1)以结构化的形式(如表、树或图表)将大量数据存储到磁盘中。

(2)便于快速访问,将数据以结构化的形式存储到内存中。

在数据进行存储之前必须先对行字符进行编码,根据原数据编码所选的模式更改。

3基于Python的网络爬虫3种筛选技术

3.1正则表达式

正则表达式有独立的系统,用于筛选关键信息的工具。根据内容,观察相似性找出它们共同拥有的内容,将不同的内容用正则表达式语法中的特殊元素代替,找出一系列符合这样规则的内容。

生活中每天都会用到正则表达式,如百度,当搜索一个内容时,百度系统自动生成一条正则表达式,然后在百度数据库中筛选并呈现出所有包含搜索关键字的信息。许多软件如Python、C、C++、Java等都自带正则库。

首先获取这个网页的源代码,不难看出,其中的超链接便是需要的每个新闻所对应的超链接。接下来将用正则表达式将这些超链接从整个网页源代码中筛选出来。如图3所示。

同种含义不同写法的正则表达式如下代码所示:

re.findall(r"http://[\w\.]+/[\w]/[\w/-]+.shtml",re⁃sponse.text)

re.findall(r"http://[\w./-]+[0-9]+.shtml",response. text)

通过正则表达式筛选出的结果如图4所示。

3.2XPath

XPath:是一门在XML文档中查找信息的语言,用于在XML文档中通过元素和属性进行导航。利用XPath 可以方便地在HTML文档中定位感兴趣的节点。lxml库是Python的第三方库,它支持标准的XPath规范。可对XML文档中标签进行导航和提取标签内容的语言。

在XPath中,有5个基本类型的节点:文档(根)节点、类别、文本、属性、元素。在对各个节点寻找时为了区分是找的根节点还是类别,XPath语言规定需要在名称前加特殊的符号。

例如,使用前需从lxml库中导入etree包。然后对某一视频网站对视频及视频的标题进行爬取并保存到本地。如图5所示

图3爬虫获取的网页源代码(部分

)

图4

网页中爬取的超链接

19

2019.09