范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

巨细!小姐姐告诉你关于BeautifulSoup的一切(续)

  作者:潮汐
  来源:Python 技术详细了解 BeautifulSoup 爬虫
  前面第一篇文章是关于 BeautifulSoup 爬虫的基础知识详解第一部分,主要介绍了 BeautifulSoup 爬虫的安装过程及简介,同时又快速学习了利用 BeautifulSoup 技术定位标签、获取标签内容的相关知识点,今天的文章将深入地介绍 BeautifulSoup 技术的详细语法及其相关用法。 1.BeautifulSoup 对象
  BeautifulSoup 将复杂的 HTML 文档转换成一个树形结构,每个节点都是 Python 对象,BeautifulSoup 官方文档将所有的对象归纳为以下四种: Tag NavigableString BeautifulSoup Comment
  接下来详细介绍 BeautifulSoup 的四个对象:
  Tag
  Tag 对象表示 XML 或 HTML 文档中的标签,通俗地讲就是 HTML 中的一个个标签,该对象与 HTML 或 XML 原生文档中的标签相同。Tag 有很多方法和属性,BeautifulSoup 中定义为 soup.Tag,其中 Tag 为 HTML 中的标签,比如 a、title 等,其结果返回完整的标签内容,包括标签的属性和内容等。例如以下实例就是 Tag: BeautifulSoup 技术详解 

Hello

Python 技术   以上的 HTML 代码中,title、p 都是标签,起始标签和结束标签之间加上内容就是 Tag。标签获取方法代码如下: #创建本地文件soup对象 soup = BeautifulSoup(open("test.html","rb"), "html.parser") #获取a标签 a = soup.a #Tag print("a标签的内容是:", a)   除此之外,Tag 中最重要的属性是 name 和 attrs 。 name   name 属性用于获取文档树的标签名字,如果想获取 title 标签的名字,只要使用 soup.title.name 代码即可,对于内部标签,输出的值便为标签本身的名称。 attrs attrs是属性(attributes)的英文简称,属性是网页标签的重要内容。一个标签(Tag)可能有很多个属性,例如:ddd   以上实例存在两个属性,一个是class属性,对应的值为"xiaodu";一个是id属性,对应的值为"l1"。Tag属性操作方法与Python字典相同,获取p标签的所有属性代码如下,得到一个字典类型的值,它获取的是第一个段落 p 的属性及属性值。 # 获取属性 print(soup.p.attrs) # 获取属性值 print(soup.a["class"]) #[u"xiaodu"] print(soup.a.get("class")) #[u"l1"]   BeautifulSoup 每个标签 tag 可能有很多个属性,可以通过 ".attrs" 获取属性,tag 的属性可以被修改、删除或添加。   NavigableString   NavigableString 也叫可遍历的字符串,字符串常被包含在 tag 内,BeautifulSoup 用 NavigableString 类来包装tag中的字符串,   BeautifulSoup 用 NavigableString 类来包装 tag 中的字符串,NavigableString 表示可遍历的字符串。一个 NavigableString 字符串与 Python 中的 Unicode 字符串相同,并且支持包含在遍历文档树和搜索文档树中的一些特性。下述代码可查看 NavigableString 的类型。 # coding=utf-8 from bs4 import BeautifulSoup soup = BeautifulSoup(open("test.html","rb"), "html.parser") tag = soup.title print(type(tag.string))   输出结果如下:   BeautifulSoup   BeautifulSoup 对象表示的是一个文档的全部内容,通常情况下把它当作 Tag 对象,该对象支持遍历文档树和搜索文档树中描述的大部分的方法,下面代码是输出 soup 对象的类型,输出结果就是 BeautifulSoup 对象类型。# coding=utf-8 from bs4 import BeautifulSoup soup = BeautifulSoup(open("test.html","rb"), "html.parser") tag = soup.title print(type(soup))   输出结果如下:   因为 BeautifulSoup 对象并不是真正的 HTML 或 XML 的标签 tag,所以它没有 name 和 attribute 属性。但有时查看它的 .name 属性是很方便的,故 BeautifulSoup 对象包含了一个值为[document] 的特殊属性soup.name 。下述代码即是输出 BeautifulSoup 对象的 name 属性,其值为 [document]。   Comment   Comment 对象是一个特殊类型的 NavigableString 对象,它用于处理注释对象。下面这个示例代码用于读取注释内容,代码如下: markup = "" soup = BeautifulSoup(markup, "html.parser") comment = soup.b.string print(type(comment)) print(comment) if __name__ == "__main__": mark()   输出结果如下: hello comment code 2.遍历文档树   以上内容讲解完 4 个对象后,下面的知识讲解遍历文档树和搜索文档树以及 BeatifulSoup 常用的函数。在 BeautifulSoup 中,一个标签(Tag)可能包含多个字符串或其它的标签,这些称为这个标签的子标签。   咱们继续用以下超文本协议来讲解: BeautifulSoup 技术详解

Hello

Python 技术 ddd 子节点   一个Tag可能包含多个字符串或其它的Tag,这些都是这个Tag的子节点,Beautiful Soup 提供了许多操作和遍历子节点的属性。   例如获取标签子节点内容: # coding=utf-8 from bs4 import BeautifulSoup soup = BeautifulSoup(open("test.html","rb"), "html.parser") tag = soup.title print(soup.head.contents)   输出结果如下: [" ", BeautifulSoup 技术详解, " "]   注意: Beautiful Soup中字符串节点不支持这些属性,因为字符串没有子节点。   节点内容   如果标签只有一个子节点,需要获取该子节点的内容,则需要使用 string 属性,以此输出节点的内容: # coding=utf-8 from bs4 import BeautifulSoup soup = BeautifulSoup(open("test.html","rb"), "html.parser") tag = soup.title print(soup.head.string) print(soup.title.string)   输出结果如下: None BeautifulSoup 技术详解 父节点   调用 parent 属性定位父节点,如果需要获取节点的标签名则使用 parent.name。实例如下: # coding=utf-8 from bs4 import BeautifulSoup soup = BeautifulSoup(open("test.html","rb"), "html.parser") tag = soup.title p = soup.p print(p.parent) print(p.parent.name) content = soup.head.title.string print(content.parent) print(content.parent.name)   输出结果如下:

Hello

Python 技术 ddd body BeautifulSoup 技术详解 title 兄弟节点   兄弟节点是指和本节点位于同一级的节点,其中 next_sibling 属性是获取该节点的下一个兄弟节点,previous_sibling 则与之相反,取该节点的上一个兄弟节点,如果节点不存在,则返回 None。print(soup.p.next_sibling) print(soup.p.prev_sibling) 前后节点   调用属性 next_element 可以获取下一个节点,调用属性 previous_element 可以获取上一个节点,代码举例如下:print(soup.p.next_element) print(soup.p.previous_element) 3.搜索文档树   BeautifulSoup 定义了很多搜索方法,例如 find() 和 find_all() ; 但find_all() 是最常用的一种方法,而更多的方法与遍历文档树类似,包括父节点、子节点、兄弟节点等,使用find_all()方法的代码如下:# coding=utf-8 from bs4 import BeautifulSoup soup = BeautifulSoup(open("test.html","rb"), "html.parser") tag = soup.title urls = soup.find_all("p") for u in urls: print(u)   输出结果如下:

Hello

Python 技术   使用 find_all() 可以查找到想要查找的文档内容。总结   至此,阿酱理解范围内的 BeautifulSoup 基础知识及用法基本上已经概述完毕,有差池的地方希望大家海涵,我们一起努力前行。


特斯拉2022年05月02日新消息特斯拉特斯拉2022年05月02日新消息比亚迪不如特斯拉?差距有多大?谁才是新能源汽车的王者别管马斯克的推特和可口可乐了这个消息更重要紧急召回通知!国家市场监管总局公布新一批汽车召自研芯加持,影像玩法多,vivoX80系列直达影像天花板近年来,vivo在计算摄影和光学技术这两个手机影像的关键领域都取得了重大突破,为大家带来了影像性能更加强大的旗舰手机。全新登场的vivoX80系列在影像方面再次进行了升级,不仅搭载想换手机了苹果SEXR苹果11你会怎么选?手机已经开始卡了,想换了,由于之前一直用苹果6S,习惯了,现在上面三款机都不贵,而且实用性高,办公为主我觉得很合适,但是不知道怎么选才好了。现在很多人选择在淘宝买手机,一些品牌店销手机耗电太快怎么解决?每次出门最担心的莫过于,在吃吃喝喝买买买的时候,发现手机电量告警,瞬间紧张!手机为什么耗电这么快呢?排除电池损坏,还与你的使用习惯有关,快看你中了几条?视频加载中1手机屏幕亮度过高三星再次超越苹果称霸全球智能手机市场在多数情况下,三星一直都是位居全球智能手机市场的头把交椅。在被苹果反击之后,现在三星又重新夺回了销量冠军的名衔。来自市场调研公司Canalys和Counterpoint的数据显示,微信正在输入咋回事?对方并非在回你消息,知道原因后挺伤人微信逐渐的渗透到人们的日常生活当中,微信的用户数量也在不断的增加,而当用户与对方聊天的时候,就会发现聊天页面显示正在输入,然而实际上,对方或许并非是正在回复消息,也很有可能是对方看马云或许没有吹牛,电商或将被淘汰,全新商业模式已经悄然而生电子商务的发展,很大程度上方便了人们的生活,而当初并不被看好的马云,如今也随着阿里巴巴的成功,身价有了很大的提高,然而,就在电子商务不断向前发展的时候,马云却认为接下来电商将会被淘阿尔卑斯山发现巨型鱼龙化石据路透社4月28日报道,科学家在瑞士阿尔卑斯山高处发现巨型海洋爬行动物化石。报道说,研究人员在瑞士阿尔卑斯山三座山峰之上海拔2740米的非常规地点发现了地球海洋中有史以来的最大型生Windows系统bat批处理常用命令(一)一批处理中常用的命令命令加在每个命令行的最前面,表示运行时不显示这一行的命令行。egechooff不显示后续命令行及当前命令行attrib设置文件属性ATTRIBRRAASSHHd最好的帮手往往是在你需要的时候出现,vivoX80便是如此随着五一假期的到来,想要在劳动节期间买新机犒劳一下认真劳动自己的人,那么vivo前段时间刚发布的vivoX系列的影像旗舰vivoX80将会是你的一个不二选择。何出此言?那请听我细细发布5个月下跌至2399元,256GB66W独显,骁龙888为清仓彻底拼了iQOO近些年在国内手机市场可以说是风生水起,以游戏体验为核心卖点,打造了不少独具特色的手机,比如iQOONeo5iQOO7以及本文要说的iQOONeo5S,从命名可以看出iQOO
做梦到底是好是坏?梦境深度大解析大家好,我是九剑。最近晚上睡觉的时候不知怎么回事,总是会梦到一个丁香一样的姑娘,然而一醒来想要抓住她时,啥也没了。说真的心里多少会有些失落的感觉,当真是梦里寻她千百度。蓦然回首,连魅!族!牛!逼目前的生活状态下,如果说有这么一样东西对于我们来说是每天必不可少,使用频率最高的,那阿水一定会选择手机。无论你是生活工作娱乐摸鱼都离不开手机,然而你在使用手机的时候,手机可能也在使X社一体变形通天晓公布!2022年第二季度发售最近NA家小比例的通天晓正式发售,我也刚拿到产品,最近就会做视频。而前几天X社也公布了MP比例的通天晓,我们一起简单看一下!图片转自微博用户TRANSBOTS先来看一下产品配件,主全是极品福利!简直受不了经常逛淘宝的绅士应该知道,淘宝一些特殊服装的买家秀下面经常会有一些小姐姐晒图。有时候确实比较赏心悦目。然而每次打开淘宝去评论区翻找还是太麻烦了。阿水这次给大家带来一个神器,可以直接AAT骑士擎天柱官图公布!2022年第二季度发售9月份第三方厂家AAT高调公布了变三油罐威震天,不俗的外观造型和做旧涂装引起了众多迷友的关注!而近期他们又公布了期待已久的骑士擎天柱的实拍官图,一起来看一下他的具体表现!图片转自微藏玩阁冲云霄新成员公布,竟连脚板也能变形?之前一直以为藏玩阁大比例的冲云霄是六合体,后来才知道这次直接搞了个八合体,连脚底板都是成员变的,实在是太颠覆了,今天跟兄弟们简单分享一下!图片转自微博用户藏玩阁CANGTOYS这次我在91网站看到了自己前些日子有个朋友跟阿水说再也不上那种网站了,因为他在网站刷视频居然刷到了自己的视频细思极恐,事实上我们每个人都应该有这种反偷拍意识,尤其是在住酒店的时候,更应该仔细的检测房间内有没比iphone更好的隐保护体验魅族目前的生活状态下,如果说有这么一样东西对于我们来说是每天必不可少,使用频率最高的,那九剑一定会选择手机。无论你是生活工作娱乐摸鱼都离不开手机,然而你在使用手机的时候,手机可能也在使某知名软件,被强势爆破手机录屏这种东西,说实话对于我们来说使用频率其实并不高,然后却属于必须有的东西,因为不知道什么时候你就用的到了。目前主流手机基本都会自带录屏,好用也确实好用,就是少了点录屏的专业功实拍效果不输苹果iPhone12?绿厂新机价格还不及后者三分一iPhone13系列上市后,热度居高不下,13香但又没完全香,因为粉丝心心念念的高刷等大升级基本都集成到了Pro系列,而标准版iPhone13的升级感知并不强烈。从性价比的角度来说双十一好物提前看,55英寸智能电视怎么选?这三款性价比最高转眼又快到一年一度的双十一了,一大批降价产品正在向我们招手。以往都会给大家推荐一些好用的小玩意儿,这次来看一些大件。如今很多年轻人开始追求生活品质,而智能电视就是提升居家品质的大件