版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SSM框架应用于沈工高职考试系统的设计与实践第14章网络爬虫网络数据获取14.12超文本和HTML1网络爬虫的概念3数据爬取的流程14.1.1网络爬虫的概念网络爬虫又称为网络蜘蛛、网络机器人,是按照给定规则自动获取万维网数据的程序。网络爬虫是搜索引擎的重要组成,为搜索引擎从万维网获取数据。传统网络爬虫程序执行过程:商用网络爬虫程序的工作流程较为复杂:爬取初识网页继续爬取初始网页URL满足停止条件停止爬取根据算法过滤URL将URL加入待抓取队列根据搜索策略从队列中抓取URL结束结束否是14.1.2超文本和HTML超文本是指使用超链接的方法,把文字和图片信息相互联结,形成具有相关信息的体系。常使用的是超文本标记语言是由HTML解析而成的。HTML标签用来描述和确定页面上内容的布局,标签名不区分大小写。如下案例:<html><head><title>搜索指数</title></head><body><table><tr><td>排名</td><td>关键词</td><td>搜索指数</td></tr><tr><td>1</td><td>人工智能</td><td>213546</td></tr><tr><td>2</td><td>大数据</td><td>184238</td></tr><tr><td>3</td><td>云计算</td><td>139852</td></tr></table></body></html>14.1.3数据爬取的流程网络数据的爬取流程包括发送请求、获取响应内容、解析内容和保存数据四个步骤,如下图所示。(1)发送请求:使用http向目标站点发送request,request包含请求头、请求体等(2)获取响应内容:如果requests的内容存在于目标服务器上,服务器会返回请求内容,即发送一个response。(3)解析内容:即利用正则表达式或者其他库来提取目标信息。(4)保存数据:解析得到的数据以文本、音频和视频等保存在本地,数据库文件保存至SQLite、MySQL和MongoDB等数据库系统中。模块15:requests库14.22requests库的常用方法requests库的概念14案例35:爬取电影排行榜requests定制操作3requests库是一个处理HTTP请求的第三方库,它的最大优点是程序编写过程接近正常URL访问过程。这个库建立在Python的urllib3库的基础上。requests支持非常丰富的链接访问功能,包括国际域名和URL获取、HTTP长连接和连接缓存、HTTP会话和Cookie保持等。requests库安装方法如下:14.2.1requests库概念:\>pip3installrequestsrequests库常用方法14.2.2requests库常用方法名称功能get(url[,timeout=n])对应于HTTP的GET方式,获取网页最常用的方法,可以增加timeout=n参数,设定每次请求超时时间为n秒put(url,data={'key':value'})对应于HTTP的PUT方式,其中字典用于传递客户数据post(url,data={'key':'value'})对应于HTTP的POST方式,其中字典用于传递客户数据delete(url)对应于HTTP的DELETE方式head(url)对应于HTTP的HEAD方式options(url)对应于HTTP的OPTIONS方式requests.get()代表请求过程,它返回的response对象代表响应,返回内容作为一个对象通过其属性进行操作,response对象的属性如下表所示。14.2.2requests库常用方法名称功能status_codeHTTP请求的返回状态,整数,200表示连接成功,404表示失败encodingHTTP响应内容的编码方式textHTTP响应内容的字符串形式,即URL对应的页面内容contentHTTP响应内容的二进制形式response对象的方法如下表所示:14.2.2requests库常用方法名称功能json()如果HTTP响应内容包含JSON格式数据,则该方法解析JSON数据raise_for_status()如果不是200,则产生异常为了准确获取需要的数据,有时候需要对requests的参数进行设置,包括传递URL参数、定制请求头和设置网络超时等。传递URL参数为了请求特定的数据,需要在URL的查询字符串中加入一些特定数据。这些数据一般会跟在一个问号后面,并且以键值对的形式放在URL中。在requests中,我们可以直接把这些参数保存在字典中,用params构建到URL中。14.2.3requests定制操作定制请求头在爬取网页的时候,输出的信息中有时候会出现“抱歉,无法访问”等字样,这就表示禁止爬取,需要通过定制请求头Headers解决这个问题。请求头Headers提供了关于请求、响应或其他发送实体的消息,如果没有定制请求头或请求的请求头和实际网页不一致,就可能无法返回正确结果。打开浏览器,然后在网页上单击鼠标右键,在快捷菜单中选择操作,从而获取Headers。不同浏览器的获取方法可能略有不同,以下以火狐浏览器为例说明。打开用户想访问的网页,单击鼠标右键,在弹出的快捷菜单中选择“检查”选项,在下方出现的页面中单击“网络”。以上步骤也可直接按“F12”键打开开发者工具实现。然后单击工具栏的“⟳”,再单击选择“GET”,之后滚动右下方的“所有”滚动条。14.2.3requests定制操作设置网络超时网络请求不可避免遇上请求超时的情况,可以为requests的timeout参数设定等待秒数,如果服务器在指定时间内没有应答就返回异常。14.2.3requests定制操作1importrequests2fromrequests.exceptionsimportReadTimeout,ConnectTimeout3try:4response=requests.get("",timeout=0.5)5print(response.status_code)6exceptReadTimeoutorConnectTimeout:7print('Timeout')举个例子Forexample使用requests爬取电影排行榜数据,并用json解析数据,爬取的网站为豆瓣电影排行榜。网址为:/chart按“F12”键打开开发者工具,之后单击网站右侧的分类排行榜,点击“动作”,打开第一回的网址:
/j/chart/top_list?type=5&interval_id=100:90&action=&start=0&limit=20选择“XHR”选项,通过抓包分析,可以发现该请求返回是json数据,且有发送的参数。14.2.4案例35:爬取电影排行榜模块16:BeautifulSoup库14.32BeautifulSoup库的对象BeautifulSoup库概念13BeautifulSoup库操作解析文档树BeautifulSoup是一个HTML/XML的解析器,主要功能是解析和提取HTML/XML数据。目前使用BeautifulSoup4版本安装命令:14.3.1BeautifulSoup库概念:\>pip3installbs4解析器用法优点缺点解析器Python
标准库BeautifulSoup(markup,"html.parser")执行速度适中文档容错能力差Python
标准库lxml的HTML解析器BeautifulSoup(markup,"lxml")速度快,文档容错能力强需要安装C语言库lxml的HTML解析器lxml的XML解析器BeautifulSoup(markup,
"lxml-xml")BeautifulSoup(markup,"xml")速度快,唯一支持XML的解需要安装C语言库
lxml的XML解析器BeautifulSoup的API,支持CSS选择器、Python标准库中的HTML解析器,也支持lxml的XML解析器和
HTML解析器,此外还支持html5lib解析器。不同解析器的用法和优缺点对比如下:14.3.1BeautifulSoup库概念14.3.2BeautifulSoup库的对象BeautifulSoup将复杂的HTML文档转换成一个复杂的树形结构,每个结点都是Python对象,所有对象可以归纳为Tag、NavigableString、BeautfulSoup和Comment四种类型。对象名作用Tag对用HTML中的标签NavigableString得到标签的内容后,使用.string获取标签内部的文字BeautifulSoup表示一个文档的全部内容Comment特殊类型的NavigableString对象,其内容不包括注释符号14.3.3BeautifulSoup库操作解析文档树1遍历文档树属性名作用contents和childrencontents属性和children属性获取直接子结点,contents属性将子结点以列表方式输出。而children属性返回列表生成器对象,遍历获取子节点descendants可以对所有Tag的子结点进行递归循环string没有标签返回标签里的内容。有唯一的标签返回标签的内容。包含多个子标签结点返回None。parent获取父结点nex_sibling和previou_sibling获取兄弟节点,next_sibling获取下一个兄弟结点,previou_sibling获取上一个兄弟节点,如果结点不存在,则返回None遍历文档树时,常用属性说明如下:14.3.3BeautifulSoup库操作解析文档树2搜索文档树方法名作用说明find_all()搜索当前Tag的所有Tag子结点,并判断是否符合过滤器的条件,基本写法find_all(name,attrs,recursive,text,**kwargs)name:标签名,可以是正则表达式。attrs:标签属性值,字典形式。默认recursive=True检索所有节点,recursive=False,只检索直接节点。text:检索文档内容limit。limit是**kwargs参数中的关键字参数,用于限定搜索次数,例如:limit=3。find()find(name,attrs,recursive,text)与find_all()方法的区别是find_all()返回全部结果的列表,而find()返回找到的第一个结果搜索文档树时,常用方法说明如下:14.3.3BeautifulSoup库操作解析文档树在写CSS时,标签名不加任何修饰,类名前加点,id名前加#,也可以利用类似的方法筛选元素,例如soup.select(),返回类型是列表list。3用CSS选择器筛选元素1frombs4importBeautifulSoup2html_doc=['<html><head><title>ThestoryofDog</title></head>',3'<body><pid="firstpara"align="center">Thisisoneparagraph</p>',4'<pid="secondpara"align="center">Thisistwoparagraph</p>','</html>']5soup=BeautifulSoup(''.join(html_doc),"html.parser")6print(soup.select('title'))#输出<title>元素7print(soup.select('body'))#输出<body>元素8forbodyin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 线上线下药品代理合作协议合同二篇
- 生产车间布局优化建议
- 关于采购物资进场的通知3篇范本
- 电力工程公司运维部人员工作成效与效率评估表
- 电商平台商家订单退款处理标准化指南
- 医药研发制药工程师KPI考核表
- 律师工作所非诉讼业务服务手册
- 服装品牌店铺经理绩效评定表
- 商务会议筹备与接待流程指导书
- (正式版)DB14∕T 718-2018 《高速公路交通安全设施施工指南》
- 乙酸乙酯危险化学品安全周知卡培训课件
- 药品批发企业质量管理制度培训试卷及答案
- 2026年部队预防犯罪安全形势分析
- GB/T 47574.1-2026离心铸钢及合金铸件第1部分:通用试验与公差
- 2026年4月自考02160流体力学试题及答案含评分参考
- 自身免疫性溶血性贫血诊疗规范
- GB/T 47067-2026塑料模塑件公差和验收条件
- 2025年矿业权评估师(矿业权评估经济与法律专业能力)试题(含答案)
- 中学物理全套教材目录及说明
- 2025年交通事故统计
- 2025 SMETA员工公平职业发展管理程序-SEDEX验厂专用文件(可编辑)
评论
0/150
提交评论