作家
登录

Python爬虫之BeautifulSoup

作者: 来源: 2017-06-14 17:04:45 阅读 我要评论

留意:

这里的格局只能获取这些标签的第一个,后面会讲到获取多个标签的办法。个中对于Tag有两个重要的属性name和attrs,分别表示名字和属性,介绍如下:

  • name:对于Tag,它的name就是其本身,如soup.p.name就是p
  • attrs是一个字典类型的,对应的是属性-值,如print soup.p.attrs,输出的就是{‘class’: [‘title’], ‘name’: ‘dromouse’},当然你也可以获得具体的值,如print soup.p.attrs[‘class’],输出的就是[title]是一个列表的类型,因为一个属性可能对应多个值,当然你也可以经由过程get办法获得属性的,如:print soup.p.get(‘class’)。还可以直接应用print soup.p[‘class’]

get

get办法用于获得标签下的属性值,留意这是一个重要的办法,在很多场合都能用到,比如你要获得<img src=http://developer.51cto.com/art/201706/”#”>标签下的图像url,那么就可以用soup.img.get(‘src’),具体解析如下:

  1. print soup.p.get("class") #获得第一个p标签下的src属性 

经由过程类名查找

string

get_text()

获得标签下的文本内容,只有在此标签下没有子标签,或者只有一个子标签的情况下才能返回个中的内容,不然返回的是None具体实例如下:

  1. print soup.p.string #在膳绫擎的一段文本中p标签没有子标签,是以可以或许精确返回文本的内容         
  2.  
  3. print soup.html.string  #这里获得的就是None,因为这里的html中有很多的子标签 

可以获得一个标签中的所有文本内容,包含子孙节点的内容,这是最常用的办法

搜刮文档树

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

find_all是用于搜刮节点中所有相符过滤前提的节点

1. name参数:是Tag的名字,如p,div,title …..

soup.find_all("p") 查找所有的p标签,返回的是[<b>The Dormouse's story</b>],可以经由过程遍历获取每一个节点,如下:

  1. ps=soup.find_all("p"
  2.  
  3. for p in ps: 
  4.  
  5.     print p.get('class')   #获得p标签下的class属性 

传入正则表达式:soup.find_all(re.compile(r’^b’)查找以b开首的所有标签,这里的body和b标签都邑被查到

传仁攀类列表:如不雅传入列表参数,BeautifulSoup会将与列表中任一元素匹配的内容返回.下面代码找到文档中所有<a>标签和<b>标签

  1. soup.find_all(["a""b"]) 

2. KeyWords参数,就是传入属性和对应的属性值,或者一些其他的表达式

  • soup.find_all(id='link2'),这个将会搜刮找到所有的id属性为link2的标签。传入正则表达式soup.find_all(href=http://developer.51cto.com/art/201706/re.compile("elsie")),这个将会查找所有href属性知足正则表达式的标签
  • 传入多个值:soup.find_all(id='link2',class_='title') ,这个将会查找到同时知足这两个属性的标签,这里的class必须用class_传入参数,因为class是python中的关键词
  • 有些属性不克不及经由过程以上办法直接搜刮,比如html5中的data-*属性,不过可以经由过程attrs参数指定一个字典参数来搜刮包含特别属性的标签,如下:
  1. pip install lxml 
  1. # [<div data-foo="value">foo!</div>] 
  2.  
  3. data_soup.find_all(attrs={"data-foo""value"})   #留意这里的atts不仅可以或许搜刮特别属性,亦可以搜刮通俗属性      
  4.  
  5. soup.find_all("p",attrs={'class':'title','id':'value'})  #相当与soup.find_all('p',class_='title'

      推荐阅读

      华为发力云端 撬动城市云计算产业升级

    【51CTO.com原创稿件】进入2017年,记者异常明显地感到到,云办事的成长,已经成为城市之间比拼实力的重要赛道>>>详细阅读


    本文标题:Python爬虫之BeautifulSoup

    地址:http://www.17bianji.com/lsqh/35763.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)