《数据采集技术》课件-项目二:爬取豆瓣电影网站_第1页
《数据采集技术》课件-项目二:爬取豆瓣电影网站_第2页
《数据采集技术》课件-项目二:爬取豆瓣电影网站_第3页
《数据采集技术》课件-项目二:爬取豆瓣电影网站_第4页
《数据采集技术》课件-项目二:爬取豆瓣电影网站_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目二:爬取豆瓣电影网站目录01任务1使用正则表达式02任务2:使用Xpath爬取豆瓣电影排行榜03任务3:使用BeautifulSoup爬取豆瓣电影TOP250任务1:使用正则表达式

任务描述

初次爬取的网页数据大多是以HTML源代码形式返回到我们的爬虫程序中的,当我们需要从爬取到的源代码中获取到具体所需数据时,就需要用到相应的解析工具了,正则表达式就是众多解析工具中的一个。正则表达式在引入re模块后以字符串前加r的形式存在,通过正则表达式的特殊字符就可以从杂乱的数据中获取到所需的数据。任务目标

了解正则表达式的基本格式0201了解正则表达式的基本概念使用re输出文章中的指定内容0403了解特殊字符的作用1.1.1正则表达式基本概念

正则表达式是一种用于匹配和操作文本的工具,它是由一系列字符和特殊字符组成的字符,用于描述要匹配的文本字符。

正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下。1.1正则表达式概述1.1正则表达式概述1.1.2常用匹配规则:1.2常用匹配方法1.2.1match方法传入要匹配的字符串以及正则表达式,就可以检测这个正则表达式是否匹配字符串;规则:从字符串的起始位置匹配正则表达式,如果匹配,就返回匹配成功的结果;如果不匹配,就返回None;实例演示:字符串匹配—输出结果:Match对象

group方法:输出匹配到的内容

span方法:输出匹配的范围练习:练习:

对给定字符串进行匹配要求:

使用正则表达式进行匹配,只提取到电话号码结束,并输出匹配范围待匹配字符串:

MyphonenumberindmynameisPenny1.2常用匹配方法思考:刚才我们用match方法可以得到匹配到的字符串内容,如果想从字符串中提取一部分内容,怎么办?(1)匹配目标—使用括号()将想提取的子字符串括起来1.2常用匹配方法(2)通用匹配—.*—“.”可以匹配任意字符(除换行符)

—“*”代表匹配前面的字符无限次—“.”与“*”组合

匹配任意字符1.2常用匹配方法(3)贪婪与非贪婪①贪婪匹配

—.*会匹配尽可能多的字符②非贪婪匹配—.*?

—尽可能匹配少的字符

1.2常用匹配方法③修饰符

—用一些可选标志修饰符来控制匹配的模式

—实例演示,观察输出结果

AttributeError常用修饰符re.I:使匹配对大小写不敏感re.L:做本地化识别(locale-aware)匹配re.M:多行匹配,影响^和$re.S:使匹配包括换行在内的所有字符re.U:根据Unicode字符集解析字符。这个标志影响\w、\W、\b、和\Bre.X:该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解注:在网页匹配中,较为常用的有re.S和re.I1.2常用匹配方法④转义匹配—当遇到用于正则匹配模式的特殊字符时,在前面加反斜线转义一下即可思考:match方法在使用时需要考虑到开头的内容,这在做匹配时并不方便。它更适合用来检测某个字符串是否符合某个正则表达式的规则。如果想要得到匹配内容,怎么办?

1.2常用匹配方法

1.2.2search方法—匹配时会扫描整个字符串,然后返回第一个成功匹配的结果—规则:在匹配时,search方法会依次扫描字符串,直到找到

第一个符合规则的字符串,然后返回匹配内容,如果

搜索完了还没有找到,就返回None。1.2常用匹配方法用法实例:

给定一段待匹配的HTML文本

①提取class为active的li节点内部的超链接包含的歌

手名和歌名

②不加active(也就是匹配不带class为active的节点

内容)

③去掉re.S1.2常用匹配方法1.2.3findall方法—搜索整个字符串,然后返回匹配正则表达式的所有内容—实例:

①获取所有a节点的超链接、歌手和歌名

②获取所有li节点的歌名—返回结果列表类型(需要遍历来依次获取每组内容)

列表中元素:元组类型索引依次取出1.2常用匹配方法1.2.4sub方法—修改文本(去掉节点)—实例引入:去掉文本中的数字—实例用法:

①用sub方法将a节点去掉,只留下文本

②利用findall提取1.2常用匹配方法1.2.5compile方法—将正则字符串编译成正则表达式对象,以便在后面的匹配中

复用(给正则表达式做了一层封装)—实例用法:分别将3个日期中的时间去掉

①借助compile方法将正则表达式编译成一个正则表达

式对象

②借助sub方法思政引导★

思政引导:随着我国数字经济的发展,数据已经成为重要的生产要素。掌握网络爬虫技术不仅是技术能力的体现,更应服务于人民、服务于社会。我们应当践行“技术向善”的理念,推动优秀国产影视文化的传播,增强文化自信。任务小结

本任务围绕正则表达式的常用匹配方法,分任务逐步实现了使用正则表达式获取与解析数据的方法。

掌握了使用正则表达式提取网页中目标数据项的基本能力。

熟悉了基本静态网页的结构,了解了基础反爬机制与应对方式。

初步形成“技术应用需守法有德”的信息素养观,增强了学生对数据使用合规性的重视。任务2:使用Xpath爬取豆瓣电影排行榜

任务描述豆瓣电影是国内知名的电影信息平台,上面汇聚了丰富的电影数据,包括电影的基本信息(如名称、评分、导演、主演等)、影评、用户评价等。通过使用Xpath技术从豆瓣电影页面中爬取这些数据,能够为电影数据分析、电影推荐系统开发、电影市场研究等提供基础数据支持。任务目标了解常用XPath表达式0203使用XPath解析网页01正确安装XPath库2.1XPath概述2.1.1XPathXPath—全称XMLPathLanguage,即XML路径语言,它是一门在XML文档中查找信息的语言。它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。2.1.2相应库的安装在pycharm的命令行界面输入pipinstalllxml进行库的安装。2.1XPath概述2.1.3XPath常用规则表达式描述/从当前节点选取直接子节点//从当前节点开始选取子孙节点.选取当前节点@选取属性Text()获取文本*通配符,表示任何元素节点Nodename[@atttib='value'选取具有给定值的指定元素例:div[@class='text']表示class为text的所有div元素。实例导入lxml库的etree模块声明HTML文本未闭合调用HTML类进行初始化,成功构造了一个XPath解析对象调用tostring方法输出修正后的HTML代码输出结果:li节点标签被补全,并且还自动添加了body、html节点2.2XPath基本用法1、获取所有节点—用//开头的XPath规则来选取所有符合要求的节点返回结果:

列表形式,元素:Element对象+节点名称返回结果:列表形式,元素:Element对象

可用“中括号加索引”方式提取2.2XPath概述2、获取子节点—通过/或//即可查找元素的子节点或子孙节点

思考:如使用//div/span,结果会有什么变化?

注:/和//的区别/用于获取直接子节点,//用于获取子孙节点2.2XPath概述3、获取父节点—用“..”或“parent::”来实现

2.2XPath概述4、属性匹配—选取节点的时候,可使用“@”符号进行属性过滤

2.2XPath概述5、文本获取—用“text”方法获取节点中的文本

注意:

①如果要想获取子孙节点内部的所有文本,可以直接用

//text方法的方式,这样可以保证获取到最全面的文本

信息,但是可能会夹杂一些换行符等特殊字符

②如果想获取某些特定子孙节点下的所有文本,可以先选

取到特定的子孙节点,然后再调用text方法方法获取其

内部文本,这样可以保证获取的结果是整洁的

2.2XPath概述6、属性获取—使用“@”符号

注:与属性匹配方法的不同

①属性匹配是中括号加属性名和值来限定某个属性

②属性获取是指获取节点的某个属性

2.2XPath概述7、属性多值匹配—使用contains方法

修改后:

使用contains方法:

参数1:属性名称

参数2:属性值2.2XPath概述8、多属性匹配—运用运算符“and”连接多个属性

2.2XPath概述9、按序选择—利用中括号传入索引的方法获取特定次序的节点

注:中括号中传入数字和代码中不同,序号以1开头,不是以0开头2.2XPath概述10、节点轴选择

—XPath提供了很多节点轴选择方法,包括获取子元素、兄弟元素、父元素、祖先元素等。

2.3任务实施使用XPath获取豆瓣电影步骤1:分析网站结构2.3任务实施使用XPath获取豆瓣电影排行榜步骤2:确定目标数据项2.3任务实施使用XPath获取豆瓣电影步骤3:使用Xpath表达式获取相应数据任务小结通过学习了解Xpath常用规则。掌握使用Xpath表达式获取数据的方法。能够遵守法律法规,合法有序地爬取数据。任务3:使用BeautifulSoup获取豆瓣电影TOP250

任务描述豆瓣电影拥有丰富的电影信息资源,包括电影的基本详情、用户评分与评价、影片类型等。上一个任务我们使用Xpath实现了对豆瓣电影排行榜中数据的提取,此次我们应用BeautifulSoup这一更强大的解析工具,

来实现对豆瓣电影top250榜单数据的爬取任务。任务目标正确安装BeautifulSoup0203了解BeautifulSoup的简单使用01认识BeautifulSoup3.1.1BeautifulSoup基本概念Python的一个HTML或XML的解析库,我们可以用它来方便地从网页中提取数据,即借助网页的结构和属性等特性来解析网页(工具箱)。它可以自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码,不需要考虑编码方式,除非文档没有指定一个编码方式,仅仅需要说明一下原始编码方式就可以了。3.1BeautifulSoup概述3.1BeautifulSoup概述3.1.2BeautifulSoup的安装在pyechram的命令行界面输入

pip3installbeautifulsoup4

进行安装3.1BeautifulSoup概述BeautifulSoup在解析时实际上依赖解析器,它除了支持Python标准库中的HTML解析器外,还支持一些第三方解析器(比如lxml)BeautifulSoup支持的解析器推荐使用,lxml解析器:速度快,容错能力强实例未闭合把要解析的字符串以标准的缩进格式输出输出HTML中title节点的文本内容解析器的类型完成不完整的HTML自动格式更正初始化3.2BeautifulSoup基本用法3.2.1节点选择器

—直接调用节点的名称就可以选择节点元素,再调用string属性就可以得到节点内的文本了,这种选择方式速度非常快。如果单个节点结构层次非常清晰,可以选用这种方式来解析。

注:当有多个节点时,这种选择方式只会选择到第一个匹配的节点,其他的后面节点都会忽略。3.2BeautifulSoup基本用法3.2.2提取信息

1、获取名称—利用name属性可以获取节点的名称

3.2BeautifulSoup基本用法

2、获取属性—调用attrs获取所有属性

方法一:

3.2BeautifulSoup基本用法

方法二:直接在节点元素后面加中括号,传入属性名

注:返回结果:

字符串(值唯一)

字符串组成的列表(值不唯一)3.2BeautifulSoup基本用法3、获取内容—利用string属性获取节点元素包含的文本内容3.2BeautifulSoup基本用法4、嵌套选择—Tag类型对象同样可以继续调用节点进行下一步的选择

注:在Tag类型的基础上再次选择得到的依然还是Tag类型

3.2BeautifulSoup基本用法3.2.3关联选择

—先选中某一个节点元素,然后以它为基准再选择它的子节点、父节点、兄弟节点等1、基于属性选择1)子节点和子孙节点

情况1:选取节点元素之后,想要获取它的直接子节点-调用contents属性

结果:列表形式(contents属性得到的结果是直接子节点的列表)3.2BeautifulSoup基本用法情况2:调用children属性来选择,返回结果是生成器类型3.2BeautifulSoup基本用法情况3:要得到所有的子孙节点的话,可以调用descendants属性结果:生成器(descendants会递归查询所有子节点,得到所有的子孙节点)3.2BeautifulSoup基本用法2)父节点和祖先节点情况1:获取某节点的直接父节点

3.2BeautifulSoup基本用法情况2:获取所有的祖先节点

3.2BeautifulSoup基本用法3)兄弟节点(同级节点)

3.2BeautifulSoup基本用法4)提取信息

单个节点:直接调用string、attrs等属性获得其文本和属性

多个节点的生成器:转为列表后取出某个元素,然后再调用string、attrs等

属性获取其对应节点的文本和属性3.2BeautifulSoup基本用法2、方法选择器1)find_all—查询所有符合条件的元素

API:find_all(name,attrs,recursive,text,**kwargs)

实例一:name—根据name参数来查询元素(节点名称)

3.2BeautifulSoup基本用法实例二:attrs—传入属性进行查询

①attrs参数为字典类型

②直接传入参数

3.2BeautifulSoup基本用法实例三:String—用来匹配节点的文本,传入的形式可以是字符串,也可以是正则表达式对象

3.2BeautifulSoup基本用法2)find—查询符合条件的元素,返回单个元素,即第一个匹配的元素

3.2BeautifulSoup基本用法3)其他查询方法—与前面方法区别在于查询范围不同

find_parents和find_parent:前者返回所有祖先节点,后者返回直接父节点。

find_next_siblings和find_next_sibling:前者返回后面所有的兄弟节点,后者返回后面第一个兄弟节点。

fi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论