python爬虫入门(小白五分钟从入门到精通)
网络爬虫的介绍
本节主要介绍Pytbon语言中支持网络爬虫的库,此外还将介绍如何获取网站的爬取规则,读者在学习和践过程中一定要严格遵守网站提供的爬取规则。
网络爬虫
网络爬虫通俗来讲就是使用代码将HTML网页的内容下载到本地的过程。爬取网页主要是为了获取网中的关键信息,例如网页中的数据、图片、视频等。Python语言中提供了多个具有爬虫功能的库,下面将具
urHIib库:是Python自带的标准库,无须下载、安装即可直接使用。urllib库中包含大量的爬虫功能,但其介绍。
requests库:是python的第三方库,需要下载、安装之后才能使用。由于requests库是在urllib库的基础代码编写略微复杂。上建立的,它包含urlib库的功能,这使得requests库中的函数和方法的使用更加友好,因此requests库使
的rrob的乡认网
scrapy库:是Python的第三方库,需要下载、安装之后才能使用。scrapy库是一个适用于专业应用程岸起来更加简洁、方便。
开发的网络爬虫库。scrapy库集合了爬虫的框架,通过框架可创建一个专业爬虫系统。selenium库:是Python的第三方库,需要下载、安装后才能使用。selenium库可用于驱动计算机中的浏览器执行相关命令,而无须用户手动操作。常用于自动驱动浏览器实现办公自动化和Web应用程序测试。基于办公自动化的使用场景,本章主要介绍requests库和selenium库。而scrapy库是专业级爬虫库,如果读者对网络爬虫感兴趣,可以进入Python爬虫领域进行更深层次的学习。
robots.txt规则
在正式学习网络爬虫之前,读者需要掌握爬取规则,不是网站中的所有信息都允许被爬取,也不是所有的网站都允许被爬取。在大部分网站的根目录中存在一个robots.txt文件,该文件用于声明此网站中禁止访问的url和可以访问的url。用户只需在网站域名后面加上/robots.txt即可读取此文件的内容。
例如要获取豆瓣官网中的robots.txt文件,打开浏览器输入豆瓣官网域名并在域名后加上/robots.txt,按Enter键即可,如图15-1所示。豆瓣官网的主域名下存在大量的子域名,例如某个电影的影评url是在主域名的基础上增加子目录,其形式与磁盘中的目录路径相同。
robots.txt规则用于表明当前网站中的哪些内容是可以访问的哪些内容是禁止访问的。接下来具体介绍robots.txt文件的内容。
User-agent:表示访问网站的搜索引擎,如图15-1中一共存在3个User-agent内容,第1个User-agent的值为*,表示所有类型的搜索引擎都需要遵守第2~21行的规则。第2个User-agent的值头Wandouiia Spider,表示Wandoujia Spider搜索引擎需要遵守的规则。第3个User-agent的值为Mediapartners-Google,表示
vediapartners-Google搜索引擎需要遵守的规则ipisaow:表明该搜索引擎不允许访问的uH。例如图15-1中的/subject-search,表明豆糖官网根目录下subject_search是不允许被访问的,读者可以尝试使用浏览器访问此ccts@ach,表明可粮宫10w的值为,的表明不允许此搜索引擎访问网站的任何内容。例如图15-1所示的wand0ni结摄er遇R3学就不能访问豆官网中的任何信息。
Aiow;表明允许该搜索引擎访问的uT1。例如图15-1中的/ads.txt是允许被任何搜索引擎访问的。sitemap;网站地图,用于提供网站中所有可以被爬取的ur1,方便搜索引擎能够快速爬取到对应网页。#:表明注释,与Python中的注释概念相同。Crawl-delay:5用于提醒用户在使用爬虫工具时,每次访问之间需要延迟5秒钟,这是为了避免因用户频繁访问而导致服务器拥挤,使得用户无法正常使用浏览器。每个网在同一时间内有访问上限,超过上限将导致新用户无法访问,例如在“双十一”期间会有大量用户访间同一个两物网站,这时候如果使用爬虫工具频繁访问该网站,且爬虫工←hitps/Mm.ptprS我氏女)国头自是由代码实现的,访问速度将会非常快,就可能导致网站拥堵使用户无法正常进入网站,还可能造成商家的经济损失。
因此读者在使用爬虫工具访问某网站时,需要先阅读网站的robots,txt规则并严格遵守此规则。但有些网站并没有设定robots.txt规则,例如访问人民邮电出版社官网的robots.txt规则的结果如图15-2所示。当网站中没有robots.txt规则时,一般默认允许用户使用爬虫工具访问,但仍然要遵守《中华人民共和国网络安全法》等。
requests 库和网页源代码
本节主要讲解requests库的安装及如何获取网页源代码。
15.2.1 requests 库的安装
在命令提示符窗口或终端中执行以下命令:
pip install requests
安装成功后可使用以下命令查看库的信息:
pip show requests
返回信息如图15-3所示,包含当前安装的requests库的版本信息、官方地址、安装目录等。从返回信息可以看出requests的依赖库中存在urllib3,即urllib的第3个版本,表明requests是在urllib3的基础上开发出来的个爬虫库,其函数使用方法更为友好。
网页源代码
用户在使用浏览器访同网页时,往往会忽视网页的源代码,而获取网页中的信息需要从网页的源代码出发例如使用浏览器(本书使用的是chrome浏览器)打开人民邮电出版社官网中的期刊页。在网页空白处单鼠标右键,选择快捷菜单中的“查看页面源代码”即可打开当前网页的源代码信息页面,如图15-4和图15-5所余
网页中的源代码形式与第14章的HTML代码形式基本相同,读者可尝试阅读网页中的源代码。通过源代码可以轻松地获取网页中的文字、图片、视频等信息,还可以获取图片或视频文件的url并将文件下载到本地。
而一个网页除了HTML代码还包含]avaScript脚本语言代码,JavaScript脚本语言代码使得浏览器可以解
析和渲染网页源代码,使得用户可以阅览到图形化界面,而不是阅读纯文本代码。网页中有大量数据是包含在JavaScript脚本语言代码中的,而通过査看源代码的方式是无法获取这些数据的。例如图15-4中的图片信息在网页源代码中是无法找到的,但可以通过检查(在网页空白处单击鼠标右键,选择快捷菜单中的“检查”选项窗口查看渲染后的网页内容,找到对应图片的url,如图15-6所示。获取人民邮电出版社官网中期刊页的《通信学报》封面图片url的步骤如下,步骤1,单击检查窗口中的元素选择按钮,如图15-6所示的标注框所在位置内的图标。步骤2,单击网页中的图片位置,检查窗口将会自动跳转到该图片对应的源代码位置。
步骤3,浅蓝色部分的<img upload/2017/06/53def7a9b43044a1b1afd1991d82a323.png>为图片的源代码内容,其中upload/2017/06/53def7a9b43044a1b1afd1991d82a323.png为图片在网站服务器中的目录地址,完整的ur1只需要在前面加入网站主域名即可。
虽然网站中的内容最动态更新的,但读者只需按照上面介绍的方法执行即可获取大部分网站中的信息,括文字、图片、音乐、视频等。文上内容为如何使用浏览器获取网页中的信息,接下来将介绍使用代码获取网页中的指定信息。