Python程序设计教程-14-爬取与分析网页中的数据.pptx

上传人(卖家):三亚风情 文档编号:3371387 上传时间:2022-08-24 格式:PPTX 页数:26 大小:179.32KB
下载 相关 举报
Python程序设计教程-14-爬取与分析网页中的数据.pptx_第1页
第1页 / 共26页
Python程序设计教程-14-爬取与分析网页中的数据.pptx_第2页
第2页 / 共26页
Python程序设计教程-14-爬取与分析网页中的数据.pptx_第3页
第3页 / 共26页
Python程序设计教程-14-爬取与分析网页中的数据.pptx_第4页
第4页 / 共26页
Python程序设计教程-14-爬取与分析网页中的数据.pptx_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、Python3 程序设计 主讲教师:14 爬爬取与分析网页中的数据取与分析网页中的数据软件工程师系列Python3 程序设计程序设计第14章 爬爬取与分析网页中的数据取与分析网页中的数据 本章内容本章内容 爬取网页的urllib库和requests库 解析网页的beautifulsoup4库 网页爬取技术的应用爬取网页就是通过程序下载网页,分析网页中的不同元素,从中提取有用的数据。软件工程师系列Python3 程序设计程序设计14.1 爬取网页的爬取网页的urllib和和requests库库网页爬取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。urllib和urllib2两

2、个标准库均支持网页内容读取。Python3使用标准库urllib库来读取网页。requests是目前优秀的网页内容抓取的第三方库。软件工程师系列Python3 程序设计程序设计14.1 爬取网页的爬取网页的urllib和和requests库库 爬取网页的基础知识爬取网页的基础知识 1.HTTP协议协议 用户浏览网页的过程是客户端与Web服务器请求应答的过程。浏览器与服务器之间的通信的基础是HTTP协议。HTTP协议是一个无状态的协议,同一个客户端的一次请求和上次请求没有对应关系。2HTTP工作过程(1)客户端与服务器建立连接。(2)服务器接到请求后,给予相应的响应信息。(3)客户端接收服务器所

3、返回的信息,浏览器解析并显示网页。软件工程师系列Python3 程序设计程序设计14.1 爬取网页的爬取网页的urllib和和requests库库 爬取网页的基础知识爬取网页的基础知识3.网络爬虫 也叫网络蜘蛛(Web Spider),Spider就是一只网上的蜘蛛,它是搜索引擎抓取系统的重要组成部分。网络爬虫的主要目的是将互联网的网页下载到本地从而保存文件或备份文件。Web站点上的每个资源都有唯一的地址,该地址称为URL。protocol:/hostname:port/path 网络爬虫就是根据URL来获取网页信息的。网络爬虫应用分为两个步骤:连接网络并获取网页内容urllib(或reque

4、sts);对获得的网页内容进行处理(BeautifulSoup4)。软件工程师系列Python3 程序设计程序设计14.1 爬取网页的爬取网页的urllib和和requests库库 urllib库库1.urllib库简介 urllib库提供系列函数或方法,用于获取网页信息或下载网页。urllib.request模块。urllib.error模块。urllib.parse模块。urllib.robotparser模块。2.使用urllib库获取网页信息 使用 urllib.request.urlopen()函数可以打开一个网站,读取并打印网页信息。urllib.urlopen(url,data,

5、proxies)软件工程师系列Python3 程序设计程序设计14.1 爬取网页的爬取网页的urllib和和requests库库2.使用urllib库获取网页信息 urlopen()函数返回response对象 函数的参数url表示远程数据的路径;data表示提交到url的数据;proxies用于设置代理。response对象的方法 readline()、readlines()、fileno()、close()等方法。info()方法:返回一个httplib.HTTPMessage对象。getcode()方法:返回HTTP状态码。如果是HTTP请求,200表示请求成功完成,404表示网址未找到

6、。geturl():返回请求的url。例14-1 抓取搜狐网首页的前360个字节内容。软件工程师系列Python3 程序设计程序设计14.1 爬取网页的爬取网页的urllib和和requests库库 requests库库1.requests库概述 简洁的处理HTTP请求的第三方库,建立在Python的urllib3库基础上,是对urllib3库的再封装。requests库包括URL获取、HTTP长连接和连接缓存、自动内容解码、文件分块上传、连接超时处理、流数据下载等功能。2.requests库解析 requests库的requests.get()方法功能是网络爬虫和信息提交res=reques

7、ts.get(url,timeout=n)该函数返回的网页内容会保存为一个response对象。参数url必须采用HTTP或HTTPS方式访问,可选参数timeout用于设定每次请求超时时间。软件工程师系列Python3 程序设计程序设计14.1 爬取网页的爬取网页的urllib和和requests库库 requests库库下面的代码测试requests.get()方法和requests.head()方法的返回值类型。import requests r=requests.get(http:/)type(r)r2=requests.head(http:/)type(r2)软件工程师系列Pytho

8、n3 程序设计程序设计14.1 爬取网页的爬取网页的urllib和和requests库库 requests库库 requests.get()返回的response对象代表响应。response对象的主要属性如下。statuscode:返回HTTP请求的状态,200表示连接成功,404表示失败。text:HTTP响应内容的字符串形式,即url对应的页面内容。encoding:HTTP响应内容的编码方式。content:HTTP响应内容的二进制形式。Response对象提供了两个方法。json():如果HTTP响应内容包含JSON格式数据,则该方法解析JSON数据。raise_for_status

9、():如果status_code值不是200,则产生异常。软件工程师系列Python3 程序设计程序设计14.1 爬取网页的爬取网页的urllib和和requests库库例14-3 爬取网页内容的示例。2 import requests 4 def getHTMLText():5 r=requests.get(url,timeout=15)6 r.raise_for_status()7 r.encoding=utf-8#更改编码方式为utf-8 8 return r.text:20010 url=http:/11 text=getHTMLText()12 print(text)软件工程师系列P

10、ython3 程序设计程序设计14.2 解析网页的beautifulsoup4库 beautifulsoup4库库概述概述 beautifulsoup4库也称为bs4库或BeautifulSoup库 Python用于网页分析的第三方库,用来快速转换被抓取的网页。beautifulsoup4将网页转换为一颗DOM树。beautifulsoup4提供一些简单的方法以及类Python语法来查找、定位、修改一棵转换后的DOM树,还能自动将送进来的文档转换为Unicode编码。例14-4 使用bs4库访问网页元素。软件工程师系列Python3 程序设计程序设计14.2 解析网页的beautifulsou

11、p4库 beautifulsoup4库的对象库的对象 BeautifulSoup将HTML文档转换成一个树形结构,每个结点都是 对象,可以归纳为4种类型:Tag、NavigableString、BeautifulSoup、Comment。Tag对象,HTML中的一个标签。NavigableString对象,用于操纵标签内部的文字,标签的string属性返回NavigableString对象。BeautifulSoup对象,表示的是一个文档的全部内容,大部分时候可以把它看作是一个特殊的Tag。Comment对象,是一个特殊类型的NavigableSting对象,它的内容不包括注释符号。软件工程师

12、系列Python3 程序设计程序设计14.2 解析网页的beautifulsoup4库 BeautifulSoup库操作解析文档树库操作解析文档树1.遍历文档树(1)获取直接子结点contents属性和children属性可以获取Tag的直接子结点。(2)获取所有有子结点descendants属性可以对所有Tag的子结点进行递归循环,需要遍历获取其中的内容。(3)获取结点内容 当标签中不再包含标签,string属性返回标签中的内容;标签中内嵌唯一标签,那么string属性返回最里面标签的内容;Tag包含了多个子标签结点,string的输出结果是None。软件工程师系列Python3 程序设计程

13、序设计14.2 解析网页的beautifulsoup4库 BeautifulSoup库操作解析文档树库操作解析文档树1.遍历文档树(4)获取多项内容strings属性用于获取多个内容,需要遍历获取。(5)父结点父结点是当前结点的上级结点,parent属性用于获取父结点。(6)兄弟结点兄弟结点可以理解为和本结点处在同一层级的结点,next_sibling属性用于获取当前结点的下一个兄弟结点,previous_sibling则与之相反,如果结点不存在,则返回None。软件工程师系列Python3 程序设计程序设计14.2 解析网页的beautifulsoup4库2.搜索文档树搜索文档树(1)fin

14、d_all()方法搜索当前Tag的所有子结点,语法如下。find_all(name,attrs,recursive,text,*kwargs)name:名字为name的标签。attrs:按照Tag标签属性值检索,采用字典形式。recursive:如果只想搜索Tag的直接子结点,可以使用参数recursive=False。text:通过text参数可以搜索文本字符中内容。limit:限制返回结果的数量。软件工程师系列Python3 程序设计程序设计14.2 解析网页的beautifulsoup4库2.搜索文档树搜索文档树(2)find()方法find()方法返回找到的第一个结果。find(nam

15、e,attrs,recursive,text)参数含义与find_all()方法完全相同。软件工程师系列Python3 程序设计程序设计14.2 解析网页的beautifulsoup4库3.用CSS选择器筛选元素 CSS的选择器用于选择网页元素,可以分为标签选择器、类选择器和id选择器三种。在CSS中,标签名不加任何修饰,类名前面需要加点(.)标识,id名前加#号来标识。在bs4库中,也可以利用类似的方法来筛选元素,用到的方法是soup.select(),返回类型是列表。软件工程师系列Python3 程序设计程序设计14.3 网页爬取技术的应用 Python爬取指定URL的网页页面,首先需要分

16、析页面的结构,了解标题、链接、时间等信息(即HTML元素和属性的描述)。以爬取“辽宁本科教学网”的通知公告页面为例,说明网页爬取的过程。软件工程师系列Python3 程序设计程序设计14.3 网页爬取技术的应用 爬取单一网页页面的信息爬取单一网页页面的信息 爬取页面前的准备用Google Chrome浏览器打开要爬取的页面,进入网页,打开“开发者工具”窗口。使用选择工具选择 网页元素。使用requests库爬取网页 使用bs4库解析网页例14-5 使用requests库和bs4库网页爬取示例。软件工程师系列Python3 程序设计程序设计14.3 网页爬取技术的应用 爬取来自多个页面的爬取来自

17、多个页面的信信息息 爬取的信息可能需要来自多个页面。在这种情况下,用户可对爬取信息设置条件限制,例如设置爬取关键词,或者检索某一时间段的信息等。在例14-5的基础上,爬取“辽宁本科教学网”通知公告页面中2018年4月1日之后的信息使用requests库爬取网页。关键技术“下一页”按钮的使用 日期格式的处理软件工程师系列Python3 程序设计程序设计14.3 网页爬取技术的应用 爬取单一网页页面的信息爬取单一网页页面的信息 查询的信息可能来自多个页面时,可通过“下一页”按钮,可以找到后续页面的链接。当要爬取的内容很多时,用户可以不断单击“下一页”按钮向后查找。观察浏览器的地址栏,URL地址可以

18、视为由两部分组成,通过一部分是网址,另一部分是文件路径,这部分地址应和“下一页”按钮的链接地址是一致的。在“开发者窗口”中,观察“下一页”按钮对应的网页中信息,找到该按钮对应的页面地址。不同页面的地址表达是不一样的,需要认真观察找出规律。软件工程师系列Python3 程序设计程序设计14.3 网页爬取技术的应用 爬取单一网页页面的信息爬取单一网页页面的信息例例14-6 使用requests库和bs4库爬取多个网页的示例。软件工程师系列Python3 程序设计程序设计小结 介绍了爬取网页的urllib库和requests库,讲解了解析网页的beautifulsoup4库。通过示例介绍了爬取网页信息的过程。软件工程师系列Python3 程序设计程序设计作业(1)分别使用urllib库和requests库爬取首页内容。(2)编写程序获取http:/ 程序设计程序设计

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Python程序设计教程-14-爬取与分析网页中的数据.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|