Python程序设计PPT-第7章网络爬虫

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

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