BS4 解析库的使用

BS4 解析库的使用,第1张

soup = BeautifulSoup(open('souphtml', encoding='utf8'), 'lxml')

soupa 只能查找得到第一个符合要求的节点,是一个对象,bs4自己封装类的对象

soupaattrs 获取得到所有属性和值,是一个字典

soupaattrs['href'] 获取指定的属性值

soupa['href'] 简写形式

soupastring

soupatext

soupaget_text()

soupfind_all('a') 找到所有a

soupfind_all('a', limit=2) 提取符合要求的前两个a

soupfind_all(['a', 'li']) 查找得到所有的a和li

soupfind_all('a', class_='xxx') 查找得到所有class是xxx的a

soupfind_all('li', class_=recompile(r'^xiao'))

查找所有的class以xiao开头的li标签

id选择器 #dudu

类选择器 xixi

标签选择器 div a h1

div #dudu xixi a

空格:代表后面的节点是前面节点的子节点或者子孙节点

div > #dudu > a > xixi

对于BeautifulSoup来说<li class="" >跟<li>应该是一样的。需要配合正则表达式来完成。

html = "<ul><li>1</li><li class=''>2</li><li class='name'>3</li></ul>"

soup = BeautifulSoup(html, 'htmlparser')

elem = soupfind_all('li', attrs={'class':recompile('^\s$')})

打印出来的结果为:[<li class="">2</li>]应该是你要的东西了

希望对你有帮助

一楼正解

不知道为什么要搞这么复杂?

获取价格直接这样写:

var ary1 = objsiblings("price")text();

或者

var ary1 = objclosest("li")find("price")text();

的确,你的li没有父级元素ul你的$("essay ul li cart")是不可能获取到元素并绑定对象的,而且标签像这样嵌套很容易出现兼容性问题的。

是这样的吗?用了一个HTML5的选择器--nth-child(用法的话建议你自己去查下,我说的不是很准确),具体代码如下:

<!DOCTYPE html>

<html lang="en" xmlns=">

<li class="pro_off">

            <div class="offers_money"><span>20</span>元</div>

            <div class="offers_moneys">满200可用</div>

            <div id="offers_id" style="display: none;">12</div>

        </li>

<li class="pro_off">

            <div class="offers_money"><span>20</span>元</div>

            <div class="offers_moneys">满200可用</div>

            <div id="Div1" style="display: none;">15</div>

        </li>

<li class="pro_off">

            <div class="offers_money"><span>20</span>元</div>

            <div class="offers_moneys">满200可用</div>

            <div id="Div2" style="display: none;">17</div>

        </li>

    </ul>

</body>

</html>

<script src="TravelCompany/js/jquery-183js"></script>

<script>

    //单击第三个li,显示第三个li的17所在的div

    $(function () {

        //第三个li的点击事件

        $("li:nth-child(3)")click(function () {

            //显示li后面第三个div

            $("#Div2")show();

        });

    });

</script>

你应该是想实现风琴菜单或者类似效果的吧?推荐使用jquery(轻量级的js封装组件)很方便的实现了风琴菜单。一定要用js的话代码太长了我给你点思路。首先为元素绑定onclick事件,一级li和二级li区别对待。你没说清楚哪里不明白,我就猜一下你是不知道如何选中二级节点的父节点。选中当前节点的父节点的方法是thisparentNode就是当前节点的父节点了。你可以if thisonclick 那么thisparentNodeclass就改为什么什么。你试试

以上就是关于BS4 解析库的使用全部的内容,包括:BS4 解析库的使用、怎么用beautifulsoup把下面的li标签提取出来、关于jquery的问题~当我单击class="cart"的a标签时,获取该a标签父级li标签中的价格文本 代码如下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9656328.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存