基于Python爬虫技术的研究
2022-12-13洪丽华HONGLihua黄琼慧HUANGQionghui
洪丽华 HONG Li-hua;黄琼慧 HUANG Qiong-hui
(厦门软件职业技术学院软件工程学院,厦门 361000)
0 引言
爬虫技术是一把双刃剑。随着科学的发展,网络的应用也随之快速地发展。网络的最大作用是随时随地给不同的用户提供资源。网络提供了大量的资源,特别是随着大数据技术的发展,用户如何在这些资源中尽快找到自己所需要的呢?运用爬虫技术,能够以最快地速度获取到用户所需要的相关资源。爬虫,像机器人一样,按照制定的规则、编写的程序,在网络中能够自动地搜索、整理相关的资源。爬虫技术,也称为网络爬虫[1]。运用爬虫技术,既能获取到网站上合法的、公开的的信息,也能获取到不合法的、私人的信息。本人提倡在法律法规的范围内、在道德约束的条件下,运用爬虫技术。
爬虫技术的应用非常广泛,比如:爬取网页、爬取热点新闻、爬取金融信息、爬取用户的联系方式等等[2]。其中,最广泛、最流行的应用是爬取网页,即网页爬虫。实现爬虫技术,可以运用编程语言来编写程序代码,比如:C语言、C++、Java、Python等程序设计的语言。其中,Python语言具有简洁的代码、开发的效率高等优势,颇受开发者的热爱。
本文从Python、爬虫技术和网页爬虫等三大方面进行阐述。
1 Python
Python提供的安装程序、源代码,都是免费的。它分别提供了与操作系统Windows、Linux和Mac等其它操作系统相匹配的所有免费的安装版本,又分别提供了在线的、离线的和压缩包的等安装程序。比如,Python 3.11.Orc-Sept 12,2022版 本 提 供 了Windows installer(32-bit)、Windows installer(64-bit)、Windows installer(ARM64)和Windows embeddable package(32-bit)、Windows embeddable package(64-bit)、Windows embeddable package(ARM64)等安装程序[3]。本文的程序代码是在Windows操作系统下运行的。Python的官方下载网址为:https://www.python.org/downloads。
Python不仅仅自带强大、丰富的标准库,还拥有大量的第三方库[4]。Python的所有第三方库的官方下载网址为:https://www.pypi.org。假设要下载第三方库Scrapy,登录第三方库的官方网站,在搜索框中输入Scrapy,就能搜索到它的所有版本,用户再根据电脑的配置选择相应的版本下载、安装。
在安装第三方库时,可以选择在线安装,也可以选择离线安装。如果是在线安装,比如安装Scrapy,在命令符窗口输入:pip install scrapy,系统会自动选择与电脑相匹配的scrapy版本进行安装;如果是离线安装,用户得先查看、判断电脑里面的相关软件的版本,再下载相应的scrapy版本进行安装。
2 爬虫技术
Python提供了许多库来实现爬虫技术[5],比如,BeautifulSoup库、rurlib库、requests库和pycurl库等等。其中,用得比较多的是requests库,包含以下常用的函数:request()、get()、head、post、put、patch、delete()等等。
爬虫技术的一般流程是[5]:①明确需要爬取的目标、内容;爬取哪个网站的哪些内容,每个网站的URL是不一样的,需要正确地输入,比如,百度的URL是:http://www.baidu.com;京东的URL是:http://www.jd.com;需要爬取哪些内容,得正确地书写;②用户向服务器发送请求;一般需要加请求的报头,比如加:“User-Agent”,以免被误认为是非法客户的访问;③服务器返回给用户的数据;服务器会给用户发回许许多多的数据,包含有价值的数据和无价值的数据等等;④解析、提取需要的数据;从服务器返回的数据中,解析和提取有价值的数据,过滤无价值的数据;⑤用文件、数据库或其它方式存储相应的数据;把解析和提取的有价值数据用不同的形式保存以备用。
Python也提供了许多框架来实现爬虫技术[6],比如,Portia、Crawley、Scrapy等等。其中Scrapy框架,包含下载器(Downloader)、Spider中间件(Spider Middlewares)、下载器中间件(Downloader Middlewares)等多个组件,同时,Scrapy框架也包含了许多作用不同的相对应的命令,比如,使用Scrapy下载器下载的URL并且将内容输出的fetch()命令。
但是,由于爬虫的过程中,许多服务器资源会被消耗掉,服务器的稳定性也会受到很大影响,基于种种原因,爬虫是不受网站所有者的欢迎。为了能够顺利地实现爬虫技术,需要先了解网站所有者所制定的限制措施——反爬虫,然后,再制定相应的措施来规避反爬虫。比如,可以通过访问频度的调整来规避反爬虫[7],这种方法主要是针对有些网站设置的访问频度阈值,爬虫时设置的阈值应该恰当,可以比网站设置的访问频度阈值要略低,这样爬取的稳定性会比较好、爬取的效率也会比较高。还有其它规避反爬虫的方法:代理IP、应对网站结构变化等等。
3 网页爬虫
3.1 爬取网站上的相关信息:爬取网站“京东”的首页,并且输出到文件中[8]
运用爬虫技术的一般流程,按照要求,运用Python提供的相关库的函数,按照步骤完成。
相关的步骤及代码如下。
3.2 爬取网站上的图片:爬取网站“豆瓣”首页的电影图片,并且输出到文件中
编写的代码及步骤如下。
#运行结果,所爬取的图片(部分)如图1。
图1 爬取的图片
3.3 爬取相关的网页:爬取网站“百度”上带有关键词”学习强国”的相关网页,并且输出到文件中
编写的代码及步骤如下。
图2 运行过程
4 结语
基于Python的爬虫技术,是目前许多用户所采用和所追求的一项技术,也是大部分学者比较喜欢的一种方法[9]。Python为用户提供了许多爬虫技术的库,也提供了许多爬虫技术的框架,既能够规避反爬虫技术,又能够自动地、高效率地为用户爬取需要的数据。基于Python的爬虫技术,是一项可以继续扩展和延伸的技术。