Python程序设计PPT-第7章网络爬虫PPT文件格式下载.pptx
- 文档编号:13881673
- 上传时间:2022-10-14
- 格式:PPTX
- 页数:54
- 大小:4.31MB
Python程序设计PPT-第7章网络爬虫PPT文件格式下载.pptx
《Python程序设计PPT-第7章网络爬虫PPT文件格式下载.pptx》由会员分享,可在线阅读,更多相关《Python程序设计PPT-第7章网络爬虫PPT文件格式下载.pptx(54页珍藏版)》请在冰豆网上搜索。
,第七章网络爬虫,of,31,3,*网页的概念,*类的方法,2、页面的渲染用户若想要浏览城市空气质量排名情况,必须输入网址:
*。
得到如图7.1的结果,网页的样式,实际上是html源代码经过渲染后形成的。
这个页面实际上是用户通过浏览器向DNS服务器提交*后,找到web主机服务器,主机服务器经过解析,将包含图片、HTML、JS、CSS等文件返回到用户浏览器,用户浏览器将这些文件的代码解析渲染,最终就是用户看到的结果。
整个这个过程称为用户的请求和响应,响应给客户的是html代码。
第七章网络爬虫,of,31,4,*网页的概念,*类的方法,3、网页文件的格式网页文件主要是由各种标签对构成的一个纯文本文件,如:
与标签对,与标签对等,不同的标签有不同的作用。
li标签定义列表项目,span标签被用来组合文档中的行内元素。
标签可以有属性,可以有显示的文本。
下面以表格第一行乐山市对应的第二列的html代码(乐山市)为例进行说明:
与:
是一对标签,class=tdtd-2nd,说明,span标签有一个class属性,值为tdtd-2nd,用于设置列的外观。
乐山市,是span标签的内嵌标签,用于设置超链接的,超链接文本是“乐山市”,超链接网址是/air/leshan.html,是个相对路径,绝对路径是*。
第七章网络爬虫,of,31,5,*网络爬虫的工作流程,*类的方法,网络爬虫实质上是一个能自动下载网页的程序,它是搜索引擎中最核心的部分。
通用网络爬虫是从一个或若干个初始网页上的URL开始,读取网页的代码并对页面结构进行分析、过滤,并对感兴趣的内容建立索引,同时提取网页上的其他感兴趣的超链接地址,放入到待爬行队列中,如此循环,直到满足系统的停止条件为止。
在爬取网页过程中,如何根据当前网页的超链接页面,形成待爬行队列呢?
目前有基于IP地址搜索策略、广度优先策略、深度优先策略和最佳优先等,具体请看相关文档。
第七章网络爬虫,of,31,6,*Python与网页爬虫,*类的方法,使用Python语言实现网络爬虫和信息提交是非常简单的事情,代码行数很少,也无须知道网络通信等方面知识,非常适合非专业读者使用。
然而,肆意的爬取网络数据并不是文明现象,通过程序自动提交内容争取竞争性资源也不公平。
就像那些肆意的推销电话一样,他们无视接听者意愿,不仅令人讨厌也有可能引发法律纠纷。
在互联网上爬取数据,要遵从Robots排除协议(RobotsExclusionProtocol),它也被称为爬虫协议,是网站管理者表达是否希望爬虫自动获取网络信息意愿的方法。
管理者可以在网站根目录放置一个robots.txt文件,并在文件中列出哪些链接不允许爬虫爬取。
一般搜索引擎的爬虫会首先捕获这个文件,并根据文件要求爬取网站内容。
Robots排除协议重点约定不希望爬虫获取的内容,如果没有该文件则表示网站内容可以被爬虫获得,然而,Robots协议不是命令和强制手段,只是国际互联网的一种通用道德规范。
绝大部分成熟的搜索引擎爬虫都会遵循这个协议,建议个人也能按照互联网规范要求合理使用爬虫技术。
of,56,7,高级大数据人才培养丛书,第七章网络爬虫,of,31,8,*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方式,其中字典用于传递客户端数据。
第七章网络爬虫,of,31,9,*response对象,*网页内容获取-requests库概述,通过Response对象的属性可以获取网页内容。
属性:
Status_code:
http请求返回的状态,整数,200表示连接成功,404表示失败。
在处理网页数据前,要先判断该状态值。
Text:
页面内容,以字符串形式存储在text中。
Encoding:
HTTP响应内容的编码格式,通过此属性可以更改返回页面的编码格式,便于处理中文。
方法:
Json():
如果HTTP响应页面包含JSON格式数据,该方法能够在HTTP响应内容中解析存在的JSON数据,这将带来解析HTTP的便利。
raise_for_status():
方法能在非成功响应后产生异常,即只要返。
回的请求状态status_code不是200,这个方法会产生一个异常,用于tryexcept语句。
使用异常处理语句可以避免设置一堆复杂的if语句,只需要在收到响应调用这个方法。
第七章网络爬虫,of,31,10,*response对象,*网页内容获取-requests库概述,当遇到网络问题时阿,requests会产生几种常用异常。
例如:
DNS查询失败、拒绝连接等,requests会抛出ConnectionError异常。
遇到无效HTTP响应时,requests则会抛出HTTPError异常。
若请求url超时,则抛出Timeout异常。
请求超过了设定的最大重定向次数,则会抛出一个TooManyRedirects异常。
所以在使用requests时,通常需要将此语句放在try快中进行处理。
第七章网络爬虫,of,31,11,*response对象,*网页内容获取-requests库概述,【案例7-1】爬取天堂图片网中小黄人图片网页的内容importrequestsdefgethtmltext(url):
try:
r=requests.get(url,timeout=30)r.raise_for_status()returnr.textexcept:
return“url=*print(gethtmltext(url),of,56,12,高级大数据人才培养丛书,第七章网络爬虫,of,31,13,*BeautifulSoup库概述,*网页内容解析-BeautifulSoup库,beautifulsoup4库,也称为BeautifulSoup库或bs4库,用于解析和处理HTML和XML。
它的最大优点是能根据HTML和XML语法建立解析树,进而高效解析其中的内容。
类似于c#中的或HTTP中的文档类HTML建立的Web页面一般非常复杂,除了有用的内容信息外,还包括大量用于页面格式的元素,直接解析一个Web网页需要深入了解HTML语法,而且比较复杂。
beautifulsoup4库将专业的Web页面格式解析部分封装成函数,提供了若干有用且便捷的处理函数。
有关beautifulsoup4库的更多介绍请参考这个第三方库主页:
*,第七章网络爬虫,of,31,14,*BeautifulSoup库概述,*网页内容解析-BeautifulSoup库,例如:
有一个描述学生选课的XML代码,表示20004146学生选修了2门课,20004176选修了1门课。
2000414611116722227820004176222270,第七章网络爬虫,of,31,15,*BeautifulSoup库概述,*网页内容解析-BeautifulSoup库,它对应的BeautifulSoup对象的逻辑结构可以理解成这样一棵树。
树中一般有4类节点:
Tag,NavigableString,BeautifulSoup,Comment,但很多时候,可以把节点当作Tag对象。
第七章网络爬虫,of,31,16,*beautifulsoup4库常用方法和tag节点,*网页内容解析-BeautifulSoup库,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。
第七章网络爬虫,of,31,17,*beautifulsoup4库常用方法和tag节点,*网页内容解析-BeautifulSoup库,例如:
根据选课学号和门数标签字符串,输出选课的学号。
soup=BeautifulSoup(200041462201810125)tag=soup.scsprint(tag.string)print(tag.contents0.name)print(tag.contents0.sno.string)soup.find_all(sno),of,56,18,高级大数据人才培养丛书,第七章网络爬虫,of,31,19,*正则表达式概念,*正则表达式,从网页中解析需要的数据,除了采用beautifulsoup4库的方法,也可以根据被查找字符串的特征,采用正则表达式的方法,得到符合条件的子字符串。
正则表达式库是python的标准库,使用时:
importre,即可。
正则表达式(RegularExpression):
称为规则表达式,又称为规则字符串,它通过一个字符序列来表示满足某种逻辑条件的字符串,主要用于字符串模式匹配或字符串匹配。
一个正则表达式由字母、数字和一些特殊符号组成,特殊符号也称为元字符,在正则表达式中具有特殊的含义,可以用来匹配一个或若干个满足某种条件的字符,这些元字符才是构成正则表达式的关键要素。
正则表达式通过元字符的各种运用,可以表示丰富的匹配字符串。
对程序员来说,如果需要从源字符串中得到需要的子字符串(也称结果字符串),首先要分析子字符串在源字符串中的规律,根据规律去描述正则表达式。
第七章网络爬虫,of,31,20,*正则表达式元字符介绍,*正则表达式,1、字符限定元字符,第七章网络爬虫,of,31,21,*正则表达式元字符介绍,*正则表达式,【简单案例】importrestr=南昌市17优则:
re.findall(rdd,str)17,79,80#匹配出st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 程序设计 PPT 网络 爬虫