首页 > 其他分享 >CSS选择器

CSS选择器

时间:2023-05-07 20:34:59浏览次数:27  
标签:Bar soup li ul CSS 选择器 select

  Beautiful Soup还提供了另外一种选择器——CSS选择器,所以CSS选择器是基于Beautiful Soup的库来实现的。使用CSS选择器只需要调用select方法,传入相应的CSS选择器即可。下面我们通过一个实例来看一下CSS选择有哪些具体用法。

  代码案例如下:

html='<div class="panel">
    <div class="panel-heading">
        <h4>Hello</h4>
    </div>
    <div class="panel-body">
        <ul class="list”id="list-1">
            <li class="element">Foo</li>
            <li class="element">Bar</li>
            <li class="element">Jay</li>
        </ul>
        <ul class="listlist-small"id="list-2">
            <liclass="element">Foo</li>
            <liclass="element">Bar</li>
        </ul>
</div>
</div>..

  通过select使用一些常用的方法选择方式

from bs4 import BeautifulSoup
soup= BeautifulSoup(html,"Ixml")
print(soup.select('.panel .panel-heading'))
print(soup.select('ul li'))
print(soup.select('#list-2 .element'))
print(type(soup.select('ul')[o]))

  结果如下: 

运行结果如下:
[<div class="panel-heading">
<h4>Hello</h4>
</div>]
[<li class="element">Foo</li>,<li class="element">Bar</li>, 
 <li class="element">Jay</li>,<liclass="element">Foo</li>,<liclass="element">Bar</li>]
[<liclass="element">Foo</li>,<li class="element">Bar</li>]
<class'bs4.element.Tag'>

  这里我们用了3次 CSS 选择器,返回结果均是由符合 CSS 选择器的节点组成的列表。例如select('ul li')表示选择所有ul节点下面的所有li节点,结果便是所有li节点组成的列表。

  在最后一句中,我们打印输出了列表中元素的类型。可以看到,类型依然是Tag类型。

1、嵌套选择

  select方法同样支持嵌套选择,例如先选择所有ul节点,再遍历每个ul节点,选择其li节点,实例如下:

from bs4 import BeautifulSoup
soup=BeautifulSoup(html,"lxm1')
    for ul in soup.select('ul'):
        print(ul.select('li'))

  运行结果如下:

[<li class="element"sFoo</li>,<li class-"element">Bar</li>, <li class="element">Jay</li>]
[<li class-"element"sFoo</li>,<li class="element">Bar</li>]

  可以看到,正常输出了每个ul节点下所有节点组成的列表。

2、获取属性

  既然知道节点是Tag类型,于是获取属性依然可以使用原来的方法。还是基于上面的HTML文本这里尝试获取每个ul节点的id属性。

from bs4 import BeautifulSoup
soup=BeautifulSoup(html,'Ixml')
for ul in soup.select(ul'):
    print(ul['id'])
    print(ul.attrs['id'])

  运行结果如下:

list-1
list-1
list-2
list-2

  可以看到,直接将属性名传人中括号和通过 attrs 属性获取属性值,都是可以成功获取属性的。

3、获取文本

  要获取文本,当然也可以用前面所讲的string属性。除此之外,还有一个方法,就是get_text.实例如下:

from bs4import BeautifulSoup
soup=BeautifulSoup(html,"1xml")
for li in soup.select('li'):
    print('Get Text:',li.get text())
    print('String:',li.string)

  运行结果如下:

Get Text: Foo
String:Foo
Get Text: Bar
String;Bar
Get Text: Jay
String:Jay
Get Text: Foo
String:Foo
Get Text: Bar
String:Bar

  二者的实现效果完全一致,都可以获取节点的文本值。以上就是关于CSS选择器的简单用法。

标签:Bar,soup,li,ul,CSS,选择器,select
From: https://www.cnblogs.com/LoLong/p/17380071.html

相关文章

  • 小米商城主页展示HTML+CSS
    大佬们呀,花了好几天的时间总算是看着页面展示可以了,求赐教!小米商城主页,对大佬来说肯定简单爆了,我抄写了好久呀,总是有一点点的小问题,还搞不明白主要是一个静态的小米商城页面,HTML前端代码不复杂,一堆的div和ul、li就没问题了,主要是css代码搞不懂导致显示不正常话不多说,直接上代码......
  • css3 flex弹性布局详解
    一、flexbox弹性盒子2009年,W3C提出了一种新的方案----Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。二、基本概念Flex是FlexibleBox的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性......
  • CSS绘制虚线的方案
    一、实现效果......
  • 在 iframe 中继承父窗口 css/js 的方法
    问题缘由iframe属于一个单独的文档(单独的网页窗口)不能直接使用父页面的资源,如css和js。如果iframe和父页面同域则可以在iframe中使用parent对象来使用父页的js对象继承css因为iframe是单独的网页窗口,所以页面一般都有head标签的。在iframe子页面的head......
  • Module build failed (from ./node_modules/css-loader/dist/cjs.js): TypeError: thi
    Modulebuildfailed(from./node_modules/css-loader/dist/cjs.js):TypeError:this.getOptionsisnotafunctionModulebuildfailed(from./node_modules/css-loader/dist/cjs.js):TypeError:this.getOptionsisnotafunction 用了各种办法,没有解决问题,直接把node_m......
  • FreeCodeCamp-通过创作罗斯科绘画学习 CSS 盒子模型
    index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>RothkoPainting</title><linkhref="./styles.css"rel="stylesheet"></hea......
  • css随着浏览器窗口width度变化展示数据
    这是需求这是通过css写法实现的@mediascreenand(min-width:1900px){//>=1900的设备.boxWidth{width:25%;}}@mediascreenand(min-width:1440px)and(max-width:1899px){.boxWidth{width:33%;}}@mediascreen......
  • uniapp使用scss定义全局css
    1.新建scss文件,定义各种全局css样式$orange:#ee5313!default;//主题色:橙色$darkOrange:#d43a11;//深橙色$color:#333;$gray:#999;//灰色$lightGray:#bbb;//浅灰$grayBg:#f3f3f3!important;//body灰色背景$white:#fff;//白色$blue:#1a......
  • web网页在手机端打开后左右可以滑动的css bug怎么解决
    web网页在手机端打开后左右可以滑动的cssbug怎么解决这个问题通常是由于在移动设备上使用了固定宽度的元素或容器而导致的。解决这个问题的一种方法是使用CSS媒体查询来检测移动设备,并将容器的宽度设置为100%。具体操作如下:@mediaonlyscreenand(max-width:768px){.cont......
  • CSS实现单行、多行文本溢出显示省略号
    代码单行文字溢出打点div{width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}多行文字溢出打点div{width:100px;overflow:hidden;text-overflow:ellipsis;......