python中beautifulsoup的用法,python beautifulsoup 使用
Yyds干货库存
美声常用语法解读
解析库BeautifulSoup默认支持Python的标准HTML解析库,但也支持一些第三方解析库。
分析图书馆使用的利与弊。Python标准库美汤(HTML, html.parser) Python内置标准库;执行速度快,容错性差,lxml HTML解析库的BeautifulSoup(html, lxml )快;强容错需要安装,C语言库lxml XML解析库美人汤(HTML,[LXML , XML])需要快;容错能力强;要支持XML格式,需要用浏览器解析C语言库htm5lib解析库Beautiful Soup (HTML, HTM5Lib ),最好的具有慢速容错的代码示例是demo html。
!DOCTYPE html!-状态正常-html head meta content= text/html;charset=utf-8 http-equiv= content-type /meta content= IE=Edge http-equiv= X-UA-Compatible /meta content= always name= referrer /Link= 3359 ss 1 . BD static . com/5en 1 bjq 8 aauy m2 zgoy 3k/r/www/cache/bdorz/Baidu . min . CSS rel= style sheet type= text/CSS /title Baidu once, 你就是知道/title/head bylink= # 0000 cc div id= wrapper div id= head div id= u1 A rel= no follow href= 3358 news . Baidu . com name= TJ _ tr news news/A rel= no follow href= 3359 www . Hao 123 . com name= TJ _ trhao 123 Hao 123/A rel= no follow href= 3358 map。 A rel= no follow href= http://v . Baidu . com name= TJ _ tr video video/A rel= no follow href= 3358 tieba . Baidu . com name= TJ _ trtieba post/A rel= no follow href=//www . Baidu . com/More/ name= TJ _ briicon More products/A/div/div/div/body/Create HTML Beautifully Soup 4 object from BS4 Import Beautifully Soup up=你知道/title #获取标题标签打印的名称(soup.title.name) #输出:title #获取标题标签打印的文本内容(soup.title.string) #输出:百度,你知道#获取head标签打印的所有内容(soup.head)#获取第一个div标签打印的所有内容(soup.div[id])#获取第一个A标签打印的所有内容(soup.a)#获取所有A find(id= u1 )# Get所有A标签,遍历soup中item的printed A标签中href的值. find _ all( A ):print(item . Get( href )# Get所有A标签,遍历soup中item的文本值。打印标签的find _ all( A ):print(item。get _ text ()) BeautifulSoup4四种对象BeautifulSoup4将一个复杂的HTML文档转换成一个复杂的树形结构,每个节点都是一个Python对象,所有的对象都可以归纳为四种:
标签:通俗地说,就是HTML中的标签。
从soup4导入beautiful soup soup=beautiful soup(html,Html.parser) #获取title标签打印的所有内容(soup.title) #获取head标签打印的所有内容(soup.head) #获取第一个A标签打印的所有内容(soup.a) # Type打印(Type(soup . A # soup对象本身比较特殊,它的名字是[document] print (soup。name) # head #对于其他内部标签,输出值是标签本身的名称,print(soup.head.name) #。这里我们打印出A标签的所有属性,得到的类型是一个字典。Print(soup.a.attrs) #你也可以使用get方法来传入属性的名称,它们是等价的Print(soup。一份#汤。A. Get (class) #可以修改这些属性和内容等。汤。一个[class]= new class 打印(汤。A) #你也可以删除这个属性Del soup。一个[类]。
print(soup . title . string)print(type(soup . title . string))美汤:表示一个文档的内容。
打印(类型(汤。名))打印(汤。姓名)打印(汤。attrs) comment:是一种特殊类型的NavigableString对象,其输出内容不包含注释符号。
此时不允许使用Print(soup.a) #空格和换行符。一个标签如下:# a rel= no follow href= http://news . Baidu . com name= TJ _ tr news !-news-/a print(soup . a . string)# news print(type(soup . a . string))# class soup 4 . element . comment 遍历文档树. contents:获取标签的所有子节点,返回。list#标签的content属性,在list #中输出要打印的标签的子节点(soup.head.contents),使用list索引获取其元素之一print (soup.head.contents [1])。Children:获取标记的所有子节点,返回soup.body.children中child的生成器:print (child)搜索文档树find _ all (name,attrs,recursive,text,* * kwargs)
参数字符串过滤:它会查找与字符串a _ list=soup . find _ all( a )print(a _ list)正则表达式完全匹配的内容:如果传入正则表达式,那么BeautifulSoup4会为item _ list中的item匹配内容item _ list=soup . find _ all(re . pile( a ):print(item)list通过search():如果传入一个列表, BeautifulSoup4将为item _ list中的item返回item _ list=soup.find _ all ([meta , link ]):print(item)方法:传入一个方法,匹配def name _ is _ exists(tag):return tag . has _ attr( name )item _ list=soup . find _ all(name _ is _ exists)为item _ list中的item:print(item)kwargs参数根据方法,
# query tag item _ list=soup . find _ all(id= head )print(item _ list)with id=head # href属性包含tag item _ list=soup . find _ all(href=re . pile( http://news . Baidu . com ))print(item _ list)# ss1.bdstatic.com。查询所有包含class的标签(注意:class在Python中是一个关键字,所以要加_以示区别)item _ list=soup . find _ all(class _=true)for item _ list:print(item)attrs参数不是所有的属性都可以用上述方式搜索,比如HTML的data-*属性。我们可以使用attrs参数并定义一个字典来搜索包含特殊属性的标签:
item _ list=soup . find _ all(attrs={ data-foo : value })for item _ list:print(item)text参数允许在文档中搜索字符串内容,与name参数的可选值相同。文本参数接受字符串、正则表达式和列表。
item _ list=soup . find _ all(attrs={ data-foo : value })For item _ list:print(item)item _ list=soup . find _ all(text= hao123 )For item _ list:print(item)item _ list=soup . find _ all(text=[ hao123 , map ,Paste it ])For item _ list:print(item)item _ list=soup . find _ all(text=re . pile( \ d )。
Item _ list=soup.find _ all (a ,limit=2)for item _ list:print(item)find返回第一个满足条件的标签,也就是我们要取值的时候可以用这个方法。
T=soup.div.div#相当于T=soup.find (div )。Find (div) CSS选择器根据类名查找print (soup.select( title ))print(soup . select( a ))并查找print(soup . select(.搜索打印(汤。选择( a [])打印(汤。通过结合id和print (soup)来选择( a [# u1 )。选择( a [href= 3358 tieba.baidu.获取内容的版权item _ list=soup . select( title )print(soup . select( title )[0]。Get _ text())。原创作品来自学逆流而上的博主,转载请联系作者授权,否则将追究法律责任。评论0发表评论
wx6295e0fca1591
2022-06-10 13:33
只是一个大男人,遥不可及。我将与你分享它。你们是亲戚吗?
它,小渣
博主回复了wx6295e0fca1591
2022-06-10 14:11
只是一个大男人,遥不可及。我将与你分享它。你们是亲戚吗?
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。