网络爬虫探讨及应用
2020-12-24管小卫
管小卫
摘 要:随着互联网信息技术的快速发展和大数据时代的到来,越来越多用户借助于网络搜索、在线浏览等平台,进行所需要数据信息的获取,而最常用的信息获取方式为网络爬虫。文章从爬虫概念、工作原理、爬虫分类和合法性进行了探讨,并通过实例展现了Python爬虫的简洁性,望对学习者有所帮助。
关键词:网络爬虫;搜索引擎;Python
中图分类号:TP393.092 文献标志码:A 文章编号:2095-2945(2020)27-0178-02
Abstract: With the rapid development of Internet information technology and the arrival of the era of big data, more and more users obtain the required data and information with the help of web search, online browsing and other platforms, and the most commonly used way to obtain information is web crawlers. This paper discusses the concept, working principle, classification and legitimacy of reptiles, and shows the conciseness of Python crawlers through examples, in the hope of providing help to learners.
Keywords: Web crawler; search engine; Python
人們在生活、工作等产生的数据量以指数形式爆炸式增长,如何在大量的数据中找到我们需要的数据呢?越来越多用户借助于网络搜索、在线浏览等平台,进行所需要数据信息的获取,而最常用的信息获取方式为网络爬虫。通过爬虫可以实现对海量数据信息的查找、保存与显示。
1 网络爬虫概述
1.1 网络爬虫及工作原理
网络爬虫也被称为网络蜘蛛、网络机器人,就像一只蜘蛛一样在互联网上沿着URL(统一资源定位)的丝线爬行,下载每一个URL所指向的网页,分析页面内容,它是一个自动下载网页的计算机程序或自动化脚本。爬虫的主要目的是从网页中提取相关信息并保持至本地数据库,形成一个同互联网的镜像备份。
网络爬虫实现原理:首先模拟浏览器向服务器发送正常的http(https)请求,服务器正常响应后,主机将收到包含所需信息的网页代码。然后主机使用过滤模块将所需信息从网页代码中过滤出来。如果一个模块无法完全过滤有效信息,可以采取多个模块协作的方式。
1.2 网络爬虫的价值
(1)爬取数据,进行市场调研和商业分析。如想要了解某地区的房源信息。爬取链家、安居客等房屋买卖平台提供的信息,进行分析房价变化的趋势,从而得到自己想要的结果。也可以通过抓取各个招聘网站的招聘信息,从而分析出目前哪些岗位竞争激烈,你想要应聘的岗位在你所在的地区都有哪些公司在招聘,从而做到面试前心里有数。
(2)作为机器学习、数据挖掘的原始数据。如要做一个推荐系统,可以去爬取更多维度的数据,做出更好的模型;如做图像识别,可以爬取大量的图片作为训练集进行训练。
(3)爬取优质的图片、文本、视频资源。如爬取微信公众号文章,分析新媒体内容运营策略。
1.3 爬虫的分类
网络爬虫类型有多种,常见的有通用网络爬虫和聚焦网络爬虫两种类型。
(1)通用网络爬虫:将英特网上网页信息下载到本地,成为网站内容的备份,它是搜索引擎系统的重要组成部分。搜索引擎中第一步就是爬虫,它是一种自动获取网站中网页信息的搜索程序。搜索引擎中爬虫通常还会抓取和检索html之外的文字类型的文件,如文本文件,word文件,便携式电子文档pdf等,但是对于图片,视频等非文字的内容则一般不会处理,另外对于脚本和一些网页中的程序也不会处理。
(2)聚焦网络爬虫:针对某一特定领域的数据进行抓取的程序,聚焦爬虫与通用爬虫的区别:前者在获取网页信息后会对其内容进行处理(筛选),确保抓取符合需求的网页内容。比如旅游网站,金融网站,招聘网站等等;特定领域的聚集爬虫会使用各种技术去处理我们需要的信息,所以对于网站中动态的一些程序,脚本仍会执行,以保证确定能抓取到网站中的数据。
1.4 Robots排除协议(Robots Exclusion Protocol)
也称为网络爬虫协议,它是网站管理者表达是否希望爬虫自动获取网络信息意愿的方法。当使用一个爬虫爬取一个网站的数据时,需要遵守网站所有者针对所有爬虫所制定的协议。它通常是一个叫作robots.txt的文本文件,该协议通常存放在网站根目录下,里面规定了此网站哪些内容可以被爬虫获取,及哪些网页是不允许爬虫获取的。访问网站robots协议的方法:在域名后面输入/robots.txt。
2 利用Python爬取房天下新房数据
2.1 Python语言简介
Python语言语法优美、代码简洁、开发效率高、支持模块多,现已成为人工智能、大数据和云计算时代首选编程语言。Python包含了十几万的第三方库,几乎涵盖了计算机技术的各个领域,具备了良好的编程生态,如requests库获取html页面并将其转换成字符串。bs4库用于解析和处理html和xml,可以根据html和xml语法建立解析树,进而高效解析其中的内容,re库用于处理正则表达式等。
2.2 常用Python库简介
网络爬虫应用一般分为两个步骤:一是通过网络连接获取网页的内容,可以使用requests库中的函数实现,二是对获取的网页内容进行处理,可以使用beautifulsoup4库和re库来实现。
(1)requests 库,是一个简洁且简单的处理http请求的第三方库,该库中的get()方法对应于http的GET方式,获取网页最常用的方法,通过text属性获取http响应内容的字符串形式。代码如下:
import requests
r = requests.get(url)
html = r.text
(2)BeautifulSoup4库(又称bs4库)采用面向对象的思想把页面当做一个对象,bs4库中最主要的是BeautifulSoup类,每个实例化的对象相当于一个页面。通过from-import引入bs4库中的BeautifulSoup类后创建一个BeautifulSoup对象,该对象是一个树形结构,包含了html页面中的每一个标签元素,如
、等,也就是说,每个元素都是BeautifulSoup对象的一个属性,可以使用“对象名.属性名”形式獲取(属性名为html中标签元素)。当需要列出标签对应的所有内容或需要找到非第一个标签时,需要用到BeautifulSoup的find()和find_all()方法,前者返回找到的第一个结果,而后者返回全部结果,find_all()方法可能返回多个结果,返回值采用列表形式,find()方法返回字符串形式。
(3)re库是Python标准库,直接通过import re就可使用,该库用于处理正则表达式,解析和处理html和xml。正则表达式是一种规则,只要字符串符合这个规则,就算匹配。如抓到的网页中的超链接、电话号码、电子邮箱等,可以使用正则表达式函数库re来查找数据。例如,通过re.compile(‘query)函数注册一个正则表达式,实现对字符串query的检索、匹配。当对标签属性检索时,属性和对应的值采用JSON格式,如:‘src: re.compile(‘query),其中,键值对中值的部分可以是字符串或者正则表达式。
(4)numpy库是Python提供的用于处理含有同种元素的多维数组运算的第三方库,一般通过import numpy as np引入库,其中as保留字与import一起使用改变后续的命名空间,也就是说给numpy取了一个别名为np。
2.3 房天下数据获取
本示例主要用到Python的requests库、bs4库、numpy库和re库对数据进行爬取,爬取的字段包括二手房的标题、所在位置、房源的状态、单价等四个字段。requests库用来获取网页http://newhouse.huaian.fang.com/house/s/b91中新房数据,bs4库则是解析网页内容,获取有用数据。部分代码如下:
HTML = requests.get(URL)
SOUP = BeautifulSoup(HTML.content, ‘html.parser, from_encoding=‘gb18030)
last_page = SOUP.select(‘.last)
page_number = int(last_page[0][‘href].split(‘/)[3].split(‘9)[1])
url_demo = ‘http://newhouse.huaian.fang.com/house/s/b9{}/#i+1,name.text.strip(),
for i in range(1,(page_number+1)):
url = url_demo.format(i)
html = requests.get(url)
soup = BeautifulSoup(html.content,‘html.parser,from_encoding=‘gb18030)
3 结束语
网络爬虫技术是当前人工智能和大数据领域的一个研究热点,因特网的搜索引擎利用爬虫所爬取的页面信息建立索引,实现快速搜索。Python是一种被广泛使用的高级通用脚本编程语言,从科学计算、数据处理到人工智能,几乎可以用于编写各领域的应用程序。编写基于Python的网络爬虫程序,可以更高效获取指定信息,定向抓取并分析网页资源,具有一定的实用价值。
参考文献:
[1]刘航.基于Python的重庆二手房爬取及分析[J].电脑知识与技术,2019,15(36):6-7,17.
[2]温娅娜,袁梓梁,何咏宸,等.基于Python爬虫技术的网页解析与数据获取研究[J].现代信息科技,2020,4(1):12-13,16.
[3]成文莹,李秀敏.基于Python的电影数据爬取与数据可视化分析研究[J].电脑知识与技术,2019,15(31):8-10,12.