让我们考虑一下
<li>this is li</li>
<li class="c1" data="this is data">ineinieni </li>
<li class="c1" >ineinieni </li>
<li data="this is the data1">ineinieni </li>
<li data="this is the data2">ineinieni </li>
这里我只想得到data属性的值,如下所示
this is data
this is data1
this is data2
因此,我尝试使用模式匹配,如下<li[^>]*?data\s*=\s*"\s*([^>]*?)\s*"[^>]*?>
和re.findall
,但这是抛出错误
有没有什么方法可以使用漂亮的soup找到值,我尝试了下面的方法,但是抛出了类似'keyerror:data'
的错误
for j in contSoup.find_all("li"):
print j['data']
您可以尝试以下简单方法:
或存储它:
您可以使用
bs4
对象的__getitem__
方法访问数据:输出:
出现错误是因为某些
<li>
标记没有data
属性,这意味着j["data"]
是KeyError
要避免这种情况,请使用一种可以过滤掉这些内容的方法进行搜索
select
是一个好方法;它允许您使用紧凑的CSS选择器语法来查找所需的元素。要仅查找具有<li>
属性的data
标记,请尝试:如Keyur所示,将
data=True
添加到find_all()
是另一种方法相关问题 更多 >
编程相关推荐