




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python 3 程序设计 主讲教师: 人民邮电出版社14 爬爬取与分析网页中的数据取与分析网页中的数据人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列第14章 爬爬取与分析网页中的数据取与分析网页中的数据 本章内容本章内容 爬取网页的urllib库和requests库 解析网页的beautifulsoup4库 网页爬取技术的应用爬取网页就是通过程序下载网页,分析网页中的不同元素,从中提取有用的数据。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.1 爬取网页的爬取网页的urllib和和requests库库网页爬取,就是把URL地址中指定的网络
2、资源从网络流中读取出来,保存到本地。urllib和urllib2两个标准库均支持网页内容读取。Python3使用标准库urllib库来读取网页。requests是目前优秀的网页内容抓取的第三方库。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.1 爬取网页的爬取网页的urllib和和requests库库 爬取网页的基础知识爬取网页的基础知识 1. HTTP协议协议 用户浏览网页的过程是客户端与Web服务器请求应答的过程。 浏览器与服务器之间的通信的基础是HTTP协议。 HTTP协议是一个无状态的协议,同一个客户端的一次请求和上次请求没有对应关系。2HTTP工作过程(
3、1)客户端与服务器建立连接。(2)服务器接到请求后,给予相应的响应信息。(3)客户端接收服务器所返回的信息,浏览器解析并显示网页。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.1 爬取网页的爬取网页的urllib和和requests库库 爬取网页的基础知识爬取网页的基础知识3. 网络爬虫 也叫网络蜘蛛(Web Spider),Spider就是一只网上的蜘蛛,它是搜索引擎抓取系统的重要组成部分。 网络爬虫的主要目的是将互联网的网页下载到本地从而保存文件或备份文件。 Web站点上的每个资源都有唯一的地址,该地址称为URL。 protocol:/hostname:por
4、t/path 网络爬虫就是根据URL来获取网页信息的。 网络爬虫应用分为两个步骤:连接网络并获取网页内容urllib(或requests);对获得的网页内容进行处理(beautifulsoup4)。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.1 爬取网页的爬取网页的urllib和和requests库库 urllib库库1. urllib库简介 urllib库提供系列函数或方法,用于获取网页信息或下载网页。 urllib.request模块。 urllib.error模块。 urllib.parse模块。 urllib.robotparser模块。2. 使用url
5、lib库获取网页信息 使用 urllib.request.urlopen()函数可以打开一个网站,读取并打印网页信息。 urllib.urlopen(url, data, proxies)人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.1 爬取网页的爬取网页的urllib和和requests库库2. 使用urllib库获取网页信息 urlopen()函数返回response对象 函数的参数url表示远程数据的路径;data表示提交到url的数据;proxies用于设置代理。 response对象的方法 readline()、readlines()、fileno()、
6、close()等方法。 info()方法:返回一个httplib.HTTPMessage对象。 getcode()方法:返回HTTP状态码。如果是HTTP请求,200表示请求成功完成,404表示网址未找到。 geturl():返回请求的url。例14-1 抓取搜狐网首页的前360个字节内容。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.1 爬取网页的爬取网页的urllib和和requests库库 requests库库1. requests库概述 简洁的处理HTTP请求的第三方库,建立在Python的urllib3库基础上,是对urllib3库的再封装。 reque
7、sts库包括URL获取、HTTP长连接和连接缓存、自动内容解码、文件分块上传、连接超时处理、流数据下载等功能。2. requests库解析 requests库的requests.get()方法功能是网络爬虫和信息提交res=requests.get(url,timeout=n) 该函数返回的网页内容会保存为一个response对象。参数url必须采用HTTP或HTTPS方式访问,可选参数timeout用于设定每次请求超时时间。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.1 爬取网页的爬取网页的urllib和和requests库库 requests库库下面的代码测
8、试requests.get()方法和requests.head()方法的返回值类型。 import requests r=requests.get(http:/) type(r) r2=requests.head(http:/) type(r2)人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.1 爬取网页的爬取网页的urllib和和requests库库 requests库库 requests.get() 返回的response对象代表响应。response对象的主要属性如下。 statuscode:返回HTTP请求的状态,200表示连接成功,404表示失败。 tex
9、t:HTTP响应内容的字符串形式,即url对应的页面内容。 encoding:HTTP响应内容的编码方式。 content:HTTP响应内容的二进制形式。 Response对象提供了两个方法。 json():如果HTTP响应内容包含JSON格式数据,则该方法解析JSON数据。 raise_for_status():如果status_code值不是200,则产生异常。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.1 爬取网页的爬取网页的urllib和和requests库库例14-3 爬取网页内容的示例。 2 import requests 4 def getHTML
10、Text(): 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)人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.2 解析网页的beautifulsoup4库 beautifulsoup4库库概述概述 beautifulsoup4库也称为bs4库或BeautifulSoup库 Python用于网页分析的第
11、三方库,用来快速转换被抓取的网页。 beautifulsoup4将网页转换为一颗DOM树。 beautifulsoup4提供一些简单的方法以及类Python语法来查找、定位、修改一棵转换后的DOM树,还能自动将送进来的文档转换为Unicode编码。例14-4 使用bs4库访问网页元素。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.2 解析网页的beautifulsoup4库 beautifulsoup4库的对象库的对象 BeautifulSoup将HTML文档转换成一个树形结构,每个结点都是 对象,可以归纳为4种类型:Tag、NavigableString、Bea
12、utifulSoup、Comment。 Tag对象,HTML中的一个标签。 NavigableString对象,用于操纵标签内部的文字,标签的string属性返回NavigableString对象。 BeautifulSoup对象,表示的是一个文档的全部内容,大部分时候可以把它看作是一个特殊的Tag。 Comment对象,是一个特殊类型的NavigableSting对象,它的内容不包括注释符号。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.2 解析网页的beautifulsoup4库 BeautifulSoup库操作解析文档树库操作解析文档树1. 遍历文档树(1)
13、获取直接子结点contents属性和children属性可以获取Tag的直接子结点。(2)获取所有有子结点descendants属性可以对所有Tag的子结点进行递归循环,需要遍历获取其中的内容。(3)获取结点内容 当标签中不再包含标签,string属性返回标签中的内容; 标签中内嵌唯一标签,那么string属性返回最里面标签的内容; Tag包含了多个子标签结点,string的输出结果是None。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.2 解析网页的beautifulsoup4库 BeautifulSoup库操作解析文档树库操作解析文档树1. 遍历文档树(4)
14、获取多项内容strings属性用于获取多个内容,需要遍历获取。(5)父结点父结点是当前结点的上级结点,parent属性用于获取父结点。(6)兄弟结点兄弟结点可以理解为和本结点处在同一层级的结点,next_sibling属性用于获取当前结点的下一个兄弟结点,previous_sibling则与之相反,如果结点不存在,则返回None。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.2 解析网页的beautifulsoup4库2. 搜索文档树搜索文档树(1)find_all()方法搜索当前Tag的所有子结点,语法如下。find_all(name,attrs,recursi
15、ve,text,*kwargs) name:名字为name的标签。 attrs:按照Tag标签属性值检索,采用字典形式。 recursive:如果只想搜索Tag的直接子结点,可以使用参数recursive=False。 text:通过text参数可以搜索文本字符中内容。 limit:限制返回结果的数量。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.2 解析网页的beautifulsoup4库2. 搜索文档树搜索文档树(2)find()方法find()方法返回找到的第一个结果。find(name,attrs,recursive,text)参数含义与find_all(
16、)方法完全相同。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.2 解析网页的beautifulsoup4库3. 用CSS选择器筛选元素 CSS的选择器用于选择网页元素,可以分为标签选择器、类选择器和id选择器三种。 在CSS中,标签名不加任何修饰,类名前面需要加点(.)标识,id名前加#号来标识。 在bs4库中,也可以利用类似的方法来筛选元素,用到的方法是soup.select(),返回类型是列表。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.3 网页爬取技术的应用 Python爬取指定URL的网页页面,首先需要分析页面的结构,了解标
17、题、链接、时间等信息(即HTML元素和属性的描述)。 以爬取“东北新闻网”的 国内新闻 页面为例,说明网页爬取的过程。 特别需要指出的是,爬取网页时,网站的网址或网页的结构可能有改变,解析网页时需要考虑这些因素。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.3 网页爬取技术的应用 爬取单一网页页面的信息爬取单一网页页面的信息 爬取页面前的准备用Google Chrome浏览器打开要爬取的页面,进入网页,打开“开发者工具”窗口。使用选择工具选择 网页元素。 使用requests库爬取网页 使用bs4库解析网页例14-5 使用requests库和bs4库网页爬取示例。
18、人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.3 网页爬取技术的应用 爬取来自多个页面的爬取来自多个页面的信信息息 爬取的信息可能需要来自多个页面。 在这种情况下,用户可对爬取信息设置条件限制,例如设置爬取关键词,或者检索某一时间段的信息等。 爬取“辽宁本科教学网”通知公告页面中2021年8月1日之后的信息使用requests库爬取网页。 关键技术 “下一页”按钮的使用 日期格式的处理人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.3 网页爬取技术的应用 爬取单一网页页面的信息爬取单一网页页面的信息 查询的信息可能来自多个页面时,可通过“下一页”按钮,可以找到后续页面的链接。当要爬取的内容很多时,用户可以不断单击“下一页”按钮向后查找。 观察浏览器的地址栏,URL地址可以视为由两部分组成,通过一部分是网址,另一部分是文件路径,这部分地址应和“下一页”按钮的链接地址是一致的。 在“开发者窗口”中,观察“下一页”按钮对应的网页中信息,找到该按钮对应的页面地址。 不同页面的地址表达是不一样的,需要认真观察找出规律。人民邮电出版社Python 3 程序设计程序设计程序设计新形态精品系列14.3 网页
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025标准商业借款合同范本
- 2024年诊断用药项目资金需求报告代可行性研究报告
- 2025年视觉识别设计合同范本
- 2025信托公司与银行存款保管合同
- 2025解除劳动合同协议书样本格式
- 2025商业店铺租赁合同模板
- 2025年度合作合同货车挂靠协议
- 2025华瑞科技产品销售合同副本(修正版)
- 2025健身教练劳动合同范本
- 2025音乐演出取消、延迟保险合同
- 离职体检免责协议书
- 光电工程师需掌握的常用计算试题及答案
- 烟草证借用合同范本
- 烧烫伤培训课件
- 3D打印在康复辅具中的应用-全面剖析
- 煤矿重大事故隐患判定标准解读与查找方法山西应急管理厅培训课件
- 县级安全生产大讲堂课件
- 工业废水处理工考核要素细目表与考核内容结构表(征求意见稿)
- 北京市门头沟区2025届高三一模考试生物试题(原卷版+解析版)
- 有限合伙制私募股权基金整体框架图解及案例
- 2025年中小学教师资格考试题库大全及答案
评论
0/150
提交评论