版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14章网络爬虫第14章网络爬虫掌握Web的基础知识。理解网络爬虫的基本步骤。熟练使用requests模块爬取网络数据。熟练使用BeautifulSoup
模块对数据进行解析。主要内容14.1Web的基础知识14.2爬虫概述14.3抓取网页数据14.3.2requests模块抓取网页14.4解析网页数据14.5上机实践:
爬取某网站的优秀作品数据信息14.1Web的基础知识14.1.1HTTP协议5了解Web基本概念,理解HTTP协议的结构
先定一个小目标!Web是什么?Web(WorldWideWeb)是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。一种基于互联网的全球信息系统,通过超文本链接的方式组织和共享文档资源。由许多互连的网页构成,每个网页可以包含文本、图片、音频、视频等多种媒体形式,并通过URL(统一资源定位符)进行定位和访问。Web的核心技术是HTTP(超文本传输协议)和HTML(超文本标记语言)。在Web上,用户可以使用浏览器从任何地方访问网站,并与网站上的内容进行交互。初识Web6HTTP协议HTTP协议(HyperTextTransferProtocol,超文本传输协议)是互联网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守该标准。HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果等)的协议。它属于应用层的最广泛使用的协议。初识Web7HTTP请求头第一行由两个空格分为三个字符串。第一个字符串表示此次HTTP请求所用的方法,第二个字符串表示访问Web服务器位置。第三个字符串表示此次请求所采用的HTTP协议版本。目前网络仍广泛采用1.1版本的HTTP协议。Host:指定目标服务器的主机名或IP地址。Connection:指定是否需要持久连接。User-Agent:指定客户端使用的浏览器或其他应用程序的信息。Accept:指定客户端能够接受的MIME类型。Accept-Language:指定客户端首选的自然语言。Accept-Encoding:指定客户端能够接受的编码方式,如gzip、deflate等。HTTP协议格式8HTTP相应头第一行也有三个字符串,http/1.1标识版本信息,200是网络访问状态码,标识此次访问是成功的。OK是对此次访问的状态的解释。Server:指定了服务器的类型、版本等信息。Content-Type:指定了返回的数据的MIME类型。Content-Length:指定了返回的数据的长度,以字节为单位。Content-Encoding:指定了返回的数据采用的编码方式,如gzip、deflate等。Content-Language:指定了返回数据的主要自然语言。Date:指定了消息产生的日期和时间。X-Powered-By:说明服务器所采用的解析语言。HTTP协议格式9HTTP响应头状态码1xx:提示信息类状态码,表示请求已经被接收,但处理还未完成,或者是正在进行的操作。2xx:成功类状态码,表示请求已经被成功接收和处理。3xx:重定向类状态码,表示请求需要进一步的步骤才能完成。4xx:客户端错误类状态码,表示客户端在请求过程中遇到了问题。5xx:服务器错误类状态码,表示服务器在处理请求时出现了问题。HTTP协议格式1014.1.2HTML简介11了解HTML结构,会用HTML制作简单的网页
先定一个小目标!HTML是什么?HTML(HyperTextMarkupLanguage,超文本标记语言)是一种用于创建网页的标准标记语言。它不是一种编程语言,而是一种描述性语言,通过一系列标签(tags)来描述网页中的各种元素,如文字、图形、动画、声音、表格、链接等。这些标签将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。代码141是一段完整的HTML代码。HTML介绍12一段完整的HTML代码<!DOCTYPEhtml>
标识这是一个HTML5文档。<html>
元素是HTML页面的根元素。<head>
元素包含了文档的元信息,如标题(<title>)。<body>
元素包含了网页的主体内容,如标题(<h1>)、段落(<p>)和链接(<a>)。HTML介绍13在浏览器中打开URL链接标签,可以根据此标签中的URL,跳转到对应的网页上,代码格式如下。<html>
元素是HTML页面的根元素。代码格式如下:HTML标签与爬虫14<ahref="">百度</a>图片资源,代码格式如下:HTML标签与爬虫15<imgsrc="***.jpg"width="400px"height="300px"/>视频资源,代码格式如下HTML标签与爬虫16<videosrc="123.mp4"width="400px"height="300px">视频资源</video>14.1.3
CSS简介17了解CSS结构,会用CSS美化网页
先定一个小目标!CSS:一种用于描述HTML或XML文件样式的标记性语分离内容与样式:使用CSS可以将样式信息从网页内容中分离出来,使得网页内容更加清晰、易于维护。样式信息通常保存在单独的CSS文件中,通过链接或导入的方式应用到HTML文档中。层叠与继承:CSS中的样式规则具有层叠性,即当多个规则应用于同一个元素时,会根据优先级和特定规则来决定最终应用的样式。此外,CSS还支持样式的继承,即某些样式属性会从父元素传递给子元素。丰富的样式选项:CSS提供了丰富的样式选项,可以控制网页中元素的字体、颜色、背景、边框、阴影、动画等各个方面的外观。提高可访问性和性能:通过合理使用CSS,可以改善网页的可访问性(如为残障人士提供辅助功能),并提高网页的加载性能(如通过缓存和外部样式表减少页面体积)。兼容性和浏览器支持:虽然大多数现代浏览器都支持CSS,但由于不同浏览器之间可能存在兼容性问题,因此在编写CSS时需要注意兼容性和回退策略。代码142是一段CSS代码。CSS介绍18一段CSS代码片段<style>标签标识里面的内容为CSS样式脚本。body、p均为标签选择器,它们会将HTML中的<body>标签和<p>标签中的内容渲染成对应的样式。.highlight是类选择器,它会将HTML代码中凡是定义了class="highlight"的标签中的内容渲染成对应的样式。#intro是id选择器,它会将HTML代码中定义id="intro"的标签中的内容渲染成对应的样式。。CSS介绍19在浏览器中打开14.1.4JavaScript简介20了解JavaScript结构,会用JavaScript获得页面节点
先定一个小目标!JavaScript:一种高级、解释性的编程语言,主要用于Web浏览器,可以帮助网站开发者创建动态和交互式的网站。动态类型。JavaScript不需要在声明变量时指定其类型,解释器会根据赋给变量的值自动推断其类型。面向对象。JavaScript支持面向对象编程,包括类和继承。但与传统的面向对象编程语言相比,JavaScript的面向对象模型是基于原型的。浏览器兼容性。几乎所有的现代Web浏览器都支持JavaScript,使其成为一种非常流行的前端开发语言。异步编程。JavaScript支持异步编程,这意味着某些操作(如网络请求)可以在不阻塞其他代码执行的情况下进行。开源和免费。JavaScript是开源的,任何人都可以查看、修改和分发其源代码。JavaScript介绍21一段JavaScript代码片段<script>标签标识内容代码为Script脚本,type="text/javascript"标识脚本的语言类型。document指是整个HTML文档对象,内部方法getElementById("intro")可以找到定义了id="intro"的节点。alert函数可以让浏览器弹出一个对话框。。JavaScript介绍22在浏览器中打开14.1.5Web服务器23了解Web服务器的概念,理解Web服务器的响应步骤
先定一个小目标!Web服务器的概念又叫Web站点,它能处理浏览器等Web客户端的请求,并返回相应响应。可以存储网站文件,让全世界浏览和下载。浏览器兼容性。几乎所有的现代Web浏览器都支持JavaScript,使其成为一种非常流行的前端开发语言。Web服务器24Web服务器相应步骤当服务器收到浏览器发送过来的HTTP请求头字符串后,会根据URL进行解析,找到服务器上对应的文件资源。若首次返回的HTML文件,则浏览器会在HTML文件中寻找其他文件资源。如css文件、JavaScript文件以及图片视频等资源文件。Web服务器2514.2爬虫概述27了解爬虫的基本概念
先定一个小目标!初识爬虫爬虫是什么?爬虫是通过程序模拟浏览器向Web服务器发送HTTP请求,从而获得相应的数据信息,而这些数据信息有些存储在Web站点首先响应的HTML中,有些信息存储在CSS和JavaScript文件中,还有资源文件(如图片、音视频等)由Web服务器单独响应。因此,用户应根据正确链接地址,获取相应的数据信息。初识爬虫28爬虫的步骤(1)首先选取一些网页,将这些网页的链接地址作为种子URL。(2)将第(1)步中的种子URL放入到待抓取URL队列中。(3)爬虫从待抓取URL队列中依次读取URL向Web服务器发送请求。(4)Web服务器响应后,将相应网页的内容下载到本地。(5)将第(4)步中下载的网页存储到页面模块中,等待建立索引以及后续处理;与此同时,将已下载的网页URL放入到已抓取URL队列中,以避免重复抓取网页。(6)从第(5)步中下载的网页中抽取出所有链接信息,检查其是否已被抓取,若未被抓取,将这个URL放入待抓取URL队列中。(7)重复步骤第(2)~(6)步,直到待抓取URL队列为空。初识爬虫2914.3抓取网页数据31掌握requests模块中的方法,能运用它们爬取网页
先定一个小目标!14.3.1requests模块介绍requests是什么?requests简单而优雅,继承并扩展了Python内置的urllib模块,提供了更加直观和灵活的API。requests模块发送原生的HTTP1.1请求,无需手动为URL添加查询串,也不需要。requests基础知识32requests模块的下载在CMD命令行中输入“pip3installrequests”,即可完成下载,requests基础知识33下载过程与结果requests模块中的请求方法requests模块包含一些向Web服务器发送HTTP请求的方法,如get()、post()等。34请求方法描述requests.get()从服务器获取数据requests.post()向服务器提交数据requests.put()从客户端向服务器传送的数据取代指定的文档的内容requests.delete()请求服务器删除指定页面requests.head()请求页面头部信息requests.options()获取服务器支持的HTTP请求方法requests.patch()向HTML提交局部修改请求,对应于HTTP的PATCHrequests.connect()把请求连接转换到透明的TCP/IP通道requests.trace()回环测试请求,查看请求是否被修改requests.session().get()构造会话对象requests基础知识requests模块获得服务器的响应当requests模板接受到响应信息后,会构建一个response对象,并将相应的数据。存入response对象中。。35response属性功能response.text获取文本内容response.content获取二进制数据response.status_code获取状态码response.headers获取响应头response.cookies获取cookies信息response.cookies.get_dict以字典形式获取cookies信息response.cookies.items以列表形式获取cookies信息response.url获取请求的URLresponse.historty获取跳转前的URLresponse.json获取json数据requests基础知识36运用requests模块爬取网页
先定一个小目标!14.3.2requests模块抓取网页requests爬取网页过程打开页面,找到地址栏中的URL。该处的URL包含了搜索关键字,采用UTF-8编码。按下“F12”键,单击“Network”标签,单击第一个文件,在右侧可看见对应的请求方式。requests爬取网页37requests爬取网页代码requests爬取网页38爬取代码获得文本14.4解析网页数据40掌握Web页面中的DOM
先定一个小目标!14.4.1网页数据结构分析DOM是什么?文档对象模型(DOM)是一种无关平台和语言的编程接口,无论是JavaScript还是Python都可以实现对DOM的访问,从而获得标签、属性、文本等内容。以原生的JavaScript为例,它在浏览器中被解析执行。每当Web页面被浏览器加载后,浏览器都会根据HTML标签生成DOM对象,并提供一些方法来访问文档中的节点JavaScript访问DOM41浏览器生成DOM树当浏览器解析HTML文档时,它会根据HTML标签构建一个DOM树。每个HTML元素在DOM树中都是一个节点(Node),节点可以是元素节点(Element)、文本节点(Text)、属性节点(Attribute)等。DOM树的根节点通常是<html>元素,它包含了整个网页的所有内容。<html>元素下通常会有<head>和<body>两个子元素。<head>元素包含了文档的元信息(如标题、字符编码、样式表和脚本等),而<body>元素则包含了网页的主体内容(如段落、图片、链接等)。DOM结构4243理解JavaScript获取DOM节点
先定一个小目标!14.4.2解析网页的过程和技术JavaScript访问DOM的方法document.getElementById("info").innerText:获得id为info的文本。document.getElementsByClassName("size")[0]:获得class为size的第一个节点。childNode=node.firstElementChild:获得node节点中第一个子节点。childNode.getAttribute("href"):获得标签中属性名为href的属性值。JavaScript访问DOM4445掌握BeautifulSoup模块的方法
先定一个小目标!14.4.3BeautifulSoup简介下载BeautifulSoup在命令行界面输入“pip3installbs4”即可下载,bs4是beautifulsoup4的缩写。BeautifulSoup介绍46指令运行结果图find()方法。该方法搜索当前标签的所有子节点,返回一个符合过滤条件的结果,其语法格式如下。BeautifulSoup中的方法47soup.find(name,attrs,recursive,text,**kwargs)find_all函数。该方法查找文档中所有符合条件的节点,返回符合条件的列表,其语法格式如下。BeautifulSoup中的方法48soup.find_all(name,attrs,recursive,text,limit,**kwargs)select函数。该方法使用CSS选择器查找文档中的节点,返回符合条件的结果,其语法格式如下。BeautifulSoup中的方法49soup.select(selector)BeautifulSoup提供了一些变量用以查询该节点的父、子以及兄弟等节点。BeautifulSoup中的方法50变量描述变量描述parent返回节点的父节点next_sibling返回节点的下一个兄弟节点parents返回节点的所有祖先节点previous_sibling返回节点的上一个兄弟节点contents返回节点的子节点列表next_element返回文档中下一个节点descendants返回节点的所有子孙节点previous_element返回文档中上一个节点51使用BeautifulSoup模块解析爬取的数据
先定一个小目标!14.4.4BeautifulSoup解析网页数据 第一步:打开网页,按下“F12”键,单击“Element”按钮,右侧呈现的内容便是HTML文档的结构。BeautifulSoup解析数据步骤52第二步:单击“元素选择”按钮(Element按钮向左第二个),再单击左侧列表中的书籍,即可得到对应的HTML代码。BeautifulSoup解析数据步骤53第三步:分析步骤(2)中的HTML文本,找出图书列表的<a>标签与其他<a>标签的不同之处。在该案例中个,凡是书籍列表的<a>标签都有属性name="itemlist-picture",可以利用该属性将其他的<a>标签过滤掉,语法如下。BeautifulSoup解析数据步骤54books=soup.find_all('a',attrs={'name':'itemlist-picture'})完整代码BeautifulSoup解析数据步骤55应用案例:爬取某平台课程数据教育机构需要深入了解学习者的需求和偏好,才能针对性地提供更好的课程。某平台聚集了丰富的课程数据,包括课程名称、学习人数以及价格等,若基于这些数据进行分析,则可以为教育机构提供一定的参考。为获取该平台的课程数据,需编写专业化的爬虫程序,实现数据的自动化爬取56思考:如何使用requests爬取网页和使用BeautifulSoup解析网页?
【分析】(1)指定目标网页:爬取网页需要确立“url”变量,用以储存待爬取的网页地址。(2)发起网络请求:运用requests.get()方法,针对指定的“url”发起GET请求,并附带构建的headers作为请求头,随后将返回的响应对象储存于名为response变量中。(3)获取响应数据:通过.text属性,以字符串形式获取响应的完整内容,涵盖了网页的完整HTML结构、文本内容以及包含相关资源链接等。(4)数据解析:利用BeautifulSoup模块和lxml解析器,精确定位并提取网页中的特定div元素。通过遍历提取的div元素,进一步解析出产品名称、价格及销量等详细信息。(5)持久化存储:将获取到的产品数据以表格的形式进行存储,确保在操作过程中文件资源得到妥善管理。应用案例:爬取某平台课程数据57【实现】(1)导入requests模块,确立“url”,设置请求头“headers”应用案例:爬取某平台课程数据581importrequests2importpandasaspd3frombs4importBeautifulSoup导入BeautifulSoup类4
5#设置请求头6headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,7likeGecko)Chrome/Safari/537.36Edg/'}8#创建一个空的DataFrame,用于存储产品信息9product_sheet=pd.DataFrame()【实现】(2)发起请求,获取响应数据.针对指定“url”和请求头“headers”发起GET请求,并以字符串形式获取响应数据。应用案例:爬取某平台课程数据59【实现】(3)数据解析,通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中医养生长寿地区经验介绍课件
- 人教版七年级历史下册《秦汉帝国》单元测试卷(含答案)
- 苏教版九年级语文上册名著阅读单元测试卷(含答案解析)
- ICU患者凝血功能监测与护理
- 2026年自学考试经济学专升本真题单套试卷
- 部编版七年级生物下册生物结构与功能测试卷(含答案)
- 统编版八年级数学上册函数单元测试卷(含答案解析)
- 妇科疾病的营养与食疗
- COPD患者的呼吸力学监测技术
- 2025中医康复科考核活血化瘀药应用专项试题及答案
- TSG 08-2026 特种设备使用管理规则
- 2026年兴趣小组计划
- 国开2026年春季《形势与政策》专题测验1-5答案
- 传承五四薪火 谱写青春华章新时代青年的使命与担当
- 2026年三门峡职业技术学院单招职业技能考试题库带答案详解(典型题)
- 2026年南通职业大学单招综合素质考试题库带答案详解(模拟题)
- 2026年郑州城市职业学院单招职业适应性测试模拟测试卷附答案解析
- 贵州茶叶出口贸易存在的问题及对策研究
- 肉毒毒素培训课件
- 高中家长会 家校合作,共赢高考课件-高三下学期二模分析家长会
- 不锈钢企业质量手册
评论
0/150
提交评论