find_all用法

来源:互联网 发布:被墙域名查询 编辑:程序博客网 时间:2024/06/04 19:03

  find_all用法

  假设现在爬取了这样的网页

  find_all(name,attrs,recursive,text,**kwargs)可以根据标签名,属性,内容查找文档。

  参数详解:

  name参数:

  取出标签为name的所有标签,存放到列表中,索引取出来都是bs4对象。

  soup = BeautifulSoup(html, 'lxml')双流去哪家妇科医院好?
金牛区妇科哪里有做妇科检查好的医院?
成都金牛区男科医院哪家较好
成都红光附近治疗早泄哪儿好?
武侯区治疗早泄可靠的男科医院?
金牛区包茎手术费用是多少?

  print(soup.find_all('ul'))#取出所有ul放入一个列表中,每一个ul单独取都是一个bs4对象

  '''

  [

  Foo

  Bar

  Jay

  ,

  Foo

  Bar

  ]

  '''

  print(type(soup.find_all('ul')[0]))#

  要获得里面的li标签则需要对每个bs4对象再次使用find_all()方法。

  for ul in soup.find_all('ul'):成都青羊区哪里有割包皮好的医院
成都九龙医院在线咨询?
成都双流哪里的医院能够治好阳痿
成都成华区附近哪儿的医院治疗早泄好
郫都区人流医院排行榜?
治疗月经不调成都青白江附近哪里的医院好

  print(ul.find_all('li'))

  '''

  [

  Foo

  ,

  Bar

  ,

  Jay

  ]

  [

  Foo

  ,

  Bar

  ]

  '''

  attr参数:

  print(soup.find_all(attrs={'id': 'list-1'}))

  print(soup.find_all('',{"class":"element"}))#class需要使用这种方式取

  attrs可以传入字典的方式来查找标签,但是这里有个特殊的就是class,因为class在python中是特殊的字段,所以如果想要查找class相关的可以更改为soup.find_all('',{"class":"element})。

  text参数:五块石金牛区哪家割包皮好
成都中和镇做人流哪家医院好?
成都蛟龙港做人流哪家医院好?
妇科检查去成都哪家医院好
成都市治疗阴道炎妇科医院那里好?
成都郫县治疗月经不调的医院那里好?

  print(soup.find_all(text='Foo'))#['Foo', 'Foo']

  print(soup.find_all(text='Fo'))#[]

  结果返回的是查到的所有的text='Foo'的文本,必须精确匹配。

  find的用法:

  find(name,attrs,recursive,text,**kwargs),与find_all()的区别就是find返回的匹配结果的第一个元素。

  find的用法成都金牛区哪家男科医院治疗尿道炎好?
治疗前列腺炎成都金牛区男科医院那里好?
双流区蛟龙港江治疗阳痿哪家医院好
成都市治疗勃起障碍那里的医院好?

  css选择器

  bs4提供select()直接传入CSS选择器就可以完成选择,与前端匹配css的方式基本一致。

  print(soup.select('.panel .panel-heading'))#[

  Hello

  ]

  print(soup.select('ul li'))

  print(soup.select('#list-2 .element'))#[

  Foo

  ,

  Bar

  ]

  print(type(soup.select('ul')[0]))#

  get_text()获取内容:

  for li in soup.select('li'):

  print(li.get_text())成都市治疗勃起障碍那里的医院好?
药流会不会很痛?
成都安靖无痛人流那家医院好?
武侯区治疗阳痿医院哪家比较好
五块石金牛区哪家割包皮好

  通过[属性名]或者attrs[属性名]获得属性:

  for ul in soup.select('ul'):

  print(ul['id'])#两种方法的效果一致

  print(ul.attrs['id'])

原创粉丝点击