网络爬虫课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8 of 31
7.2 网页内容获取 -requests 库概述
第七章 网络爬虫
7.2.2 response对象
通过Response 对象的属性可以获取网页内容。 属性: Status_code:http 请求返回的状态,整数, 200表示连接成功, 404表示失败。在处理 网页数据前,要先判断该状态值。 Text:页面内容,以字符串形式存储在 text中。 Encoding:HTTP 响应内容的编码格式,通过此属性可以更改返回页面的编码格式,便 于处理中文。 方法: Json(): 如果HTTP响应页面包含 JSON格式数据,该方法能够在 HTTP 响应内容中解析存 在的JSON 数据,这将带来解析 HTTP的便利。 raise_for_status() :方法能在非成功响应后产生异常,即只要返。 回的请求状态 status_code 不是200,这个方法会产生一个异常,用于try…except 语 句。使用异常处理语句可以避免设置一堆复杂的 if 语句,只需要在收到响应调用这个方 法。
http://www.tianqi.com/air/leshan.html 。
4 of 31
7.1 类的方法
第七章 网络爬虫
7.1.2 网络爬虫的工作流程
网络爬虫实质上是一个能自动下载网页的程序,它是搜索引擎中最核心的部分。 通用网络爬虫是从一个或若干个初始网页上的 URL开始,读取网页的代码并对页面结构 进行分析、过滤,并对感兴趣的内容建立索引,同时提取网页上的其他感兴趣的超链接 地址,放入到待爬行队列中,如此循环,直到满足系统的停止条件为止。 在爬取网页过程中,如何根据当前网页的超链接页面,形成待爬行队列呢?目前有基于 IP 地址搜索策略、广度优先策略、深度优先策略和最佳优先等,具体请看相关文档。
9 of 31
7.2 网页内容获取 -requests 库概述
第七章 网络爬虫
7.2.2 response对象
当遇到网络问题时阿, requests 会产生几种常用异常。 例如: DNS 查 询 失 败 、 拒 绝 连 接 等 , requests 会 抛 出ConnectionError 异常。 遇到无效 HTTP 响应时, requests 则会抛出 HTTPError 异常。 若请求url 超时,则抛出 Timeout 异常。 请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。 所以在使用 requests 时,通常需要将此语句放在 try快中进行处理。
5 of 31
7.1 类的方法
第七章 网络爬虫
7.1.Байду номын сангаас Python与网页爬虫
使用Python 语言实现网络爬虫和信息提交是非常简单的事情,代码行数很少,也无须 知道网络通信等方面知识,非常适合非专业读者使用。然而,肆意的爬取网络数据并不 是文明现象,通过程序自动提交内容争取竞争性资源也不公平。就像那些肆意的推销电 话一样,他们无视接听者意愿,不仅令人讨厌也有可能引发法律纠纷。 在互联网上爬取数据,要遵从 Robots 排除协议( Robots Exclusion Protocol ),它也 被称为爬虫协议,是网站管理者表达是否希望爬虫自动获取网络信息意愿的方法。管理 者可以在网站根目录放置一个 robots.txt 文件,并在文件中列出哪些链接不允许爬虫爬 取。一般搜索引擎的爬虫会首先捕获这个文件,并根据文件要求爬取网站内容。 Robots 排除协议重点约定不希望爬虫获取的内容,如果没有该文件则表示网站内容可 以被爬虫获得,然而, Robots 协议不是命令和强制手段,只是国际互联网的一种通用 道德规范。绝大部分成熟的搜索引擎爬虫都会遵循这个协议,建议个人也能按照互联网 规范要求合理使用爬虫技术。
span标签有一个 class属性,值为 td td-2nd ,用于设置列的外观。
<a href=/air/leshan.html target=_blank>
乐山市</a> ,是span 标签的内嵌
<a> 标签,用于设置超链接的,超链接文本是“乐山市”,超链接网址是
/air/leshan.html ,是个相对路径,绝对路径是
2 of 31
7.1 类的方法
第七章 网络爬虫
7.1.1 网页的概念
2、页面的渲染 用户若想要浏览城市空气质量排名情况,必须输入网址: http://www.tianqi.com/air 。 得到如图 7.1 的结果,网页的样式,实际上是 html 源代码经过渲染后形成的。这个页面 实际上是用户通过浏览器向 DNS 服务器提交 http://www.tianqi.com/air 后,找到 web 主机服务器,主机服务器经过解析,将包含图片、 HTML 、JS、 CSS等文件返回到用户 浏览器,用户浏览器将这些文件的代码解析渲染,最终就是用户看到的结果。整个这个 过程称为用户的请求和响应,响应给客户的是 html 代码。
7 of 56
7.2 网页内容获取 -requests 库概述
第七章 网络爬虫
7.2.1 requests对象
http工作原理: HTTP是基于请求 -响应模式的,客户端发出请求叫 Request ,服务器端的响应叫 Response 。HTTP请求服务器端,常用的方式是 GET和POST 。通常, GET表示向指定 的服务器请求数据, POST 表示向指定的服务器提交要被处理的数据。 Requests 请求的相关函数: Get(url,timeout=n): 对应HTTP的get方法,获取网页内容, timeout 设定每次请求的 超时时间,单位秒。该函数将网页的内容封装成一个 Response 对象并返回。 Post(url,data={ ‘key' :' value' }): 对应HTTP的post 方式,其中字典用于传递客户 端数据。
第七章 网络爬虫
7.3.1 Beautiful Soup库概述
它对应的 Beautiful Soup 对象的逻辑结构可以理解成这样一棵树。
树中一般有 4类节点 : Tag , NavigableString , BeautifulSoup , Comment ,但很多时 候,可以把节点当作 Tag 对象。
6 of 31
高级大数据人才培养丛书
第七章 网络爬虫
7.1 网络爬虫工作的基本原理 7.2 网页内容获取 -requests 库概述 7.3 网页内容解析 -Beautiful Soup 库 7.4 正则表达式 7.5 实战:热门电影搜索 7.6 实战:大数据论文文章标题采集 7.7 实战:全国空气质量 习题
以表格第一行乐山市对应的第二列的 html代码( <span class=td td-2nd><a
href=/air/leshan.html target=_blank>
乐山市 </a></span> )为例进行说明:
<span class=td td-2nd> 与</span> :是一对标签, class=td td-2nd ,说明,
12 of 56
7.3 网页内容解析 -Beautiful Soup 库
第七章 网络爬虫
7.3.1 Beautiful Soup库概述
beautifulsoup4 库,也称为 Beautiful Soup 库或bs4 库,用于解析和处理 HTML 和 XML 。 它的最大优点是能根据 HTML 和XML 语法建立解析树,进而高效解析其中的内容。类 似于c#中的或 HTTP中的文档类 HTML 建立的 Web 页面一般非常复杂,除了有用的内容信息外,还包括大量用于页面 格式的元素,直接解析一个 Web 网页需要深入了解 HTML 语法,而且比较复杂。 beautifulsoup4 库将专业的 Web 页面格式解析部分封装成函数,提供了若干有用且便 捷的处理函数。
15 of 31
7.3 网页内容解析 -Beautiful Soup 库
第七章 网络爬虫
7.3.2 beautifulsoup4 库常用方法和tag节点
高级大数据人才培养丛书
第七章 网络爬虫
7.1 网络爬虫工作的基本原理 7.2 网页内容获取 -requests 库概述 7.3 网页内容解析 -Beautiful Soup 库 7.4 正则表达式 7.5 实战:热门电影搜索 7.6 实战:大数据论文文章标题采集 7.7 实战:全国空气质量 习题
1 of 56
except: return “
url=http://www.ivsky.com/tupian/xiaohuangren_t21343/ print(gethtmltext(url))
11 of 31
第七章 网络爬虫
高级大数据人才培养丛书
第七章 网络爬虫
7.1 网络爬虫工作的基本原理 7.2 网页内容获取 -requests 库概述 7.3 网页内容解析 -Beautiful Soup 库 7.4 正则表达式 7.5 实战:热门电影搜索 7.6 实战:大数据论文文章标题采集 7.7 实战:全国空气质量 习题
3 of 31
7.1 类的方法
第七章 网络爬虫
7.1.1 网页的概念
3、网页文件的格式
网页文件主要是由各种标签对构成的一个纯文本文件,如: <head> 与</head> 标签
对,<li>与</li>标签对等,不同的标签有不同的作用。如: li标签定义列表项目,
span 标签被用来组合文档中的行内元素。标签可以有属性,可以有显示的文本。下面
10 of 31
7.2 网页内容获取 -requests 库概述
7.2.2 response对象
【案例 7-1 】爬取天堂图片网中小黄人图片网页的内容 import requests def gethtmltext(url):
try: r=requests.get(url,timeout=30) r.raise_for_status() return r.text
7.1 类的方法
第七章 网络爬虫
7.1.1 网页的概念
1、URL 的含义 URL(Uniform Resource Locator,URL) 称为统一资源定位符,也称为网址。互联网上 的每个页面,都对应一个 URL。 如:浏览上海市空气质量和 pm2.5 指标的网址为 http://www.tianqi.com/air/shanghai.html 。 URL主要包含四个部分:协议部分,如上海市空气质量网址的协议为“ http:”,表示 超文本传输协议;网站名部分,如上海市空气质量网址的网站名部分为 www.tianqi.com ,表示该网页所在的主机位置;端口部分,跟在域名后面的是端口, 域名和端口之间使用“ :”作为分隔符,端口不是一个 URL必须的部分,如果采用默认 端口 80,则可以省略端口部分;虚拟目录和文件名部分,如上海市空气质量网址的虚 拟目录和文件名部分内容为 /air/shanghai.html ,表示该网页在这个主机上的具体路径。
例如:有一个描述学生选课的XML代码,表示20004146学生选修了2门课,20004176选修了1门课。 <scs>
<sc> <sno>20004146</sno> <courses> <course> <cno>1111</cno> <grade>67 </grade> </course> <course> <cno>2222</cno> <grade>78 </grade> </course> </courses>
</sc> <sc>
<sno>20004176</sno> <courses>
<course> <cno>2222</cno> <grade> 70</grade>
</course> </courses> </sc> </scs>
14 of 31
7.3 网页内容解析 -Beautiful Soup 库
有关beautifulsoup4 库的更多介绍请参考这个第三方库主页: http://www.crummy.com/software/BeautifulSoup/bs4/
13 of 31
7.3 网页内容解析 -Beautiful Soup 库
第七章 网络爬虫
7.3.1 Beautiful Soup库概述