作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 HTML 代码,我试图获取每个特定“日期”的“客户”,但我只得到第一个下一个元素:
<div class="info">
<div class="left-wrap"><span class="date">DATE-1</span></div>
</div>
<div class="clients-list">
<div>
<span class="client" >client1</span>
<span class="client" >client2</span>
<span class="client" >client3</span>
</div>
</div>
<div class="clients-list">
<div>
<span class="client" >client4</span>
<span class="client" >client5</span>
<span class="client" >client6</span>
</div>
</div>
<div class="info">
<div class="left-wrap"><span class="date" >DATE-2</span></div>
</div>
<div class="clients-list">
<div>
<span class="client" >client7</span>
<span class="client" >client8</span>
</div>
</div>
<div class="clients-list">
<div>
<span class="client" >client9</span>
<span class="client" >client10</span>
</div>
</div>
<div class="clients-list">
<div>
<span class="client" >client11</span>
<span class="client" >client12</span>
</div>
</div>
我正在使用以下代码:
soup=BeautifulSoup(html,'html.parser')
dates=soup.find_all(class_='date')
for date in dates:
print(date.text)
for item in date.find_next(class_='clients-list').find_all(class_='client'):
print(item.text)
得到的输出是:
DATE-1
client1
client2
client3
DATE-2
client7
client8
我尝试使用 find_next_all,但得到了相同的输出。
最佳答案
有点棘手,但你会得到输出。使用 find_next_siblings
()
from bs4 import BeautifulSoup
html='''<div class="info">
<div class="left-wrap"><span class="date">DATE-1</span></div>
</div>
<div class="clients-list">
<div>
<span class="client" >client1</span>
<span class="client" >client2</span>
<span class="client" >client3</span>
</div>
</div>
<div class="clients-list">
<div>
<span class="client" >client4</span>
<span class="client" >client5</span>
<span class="client" >client6</span>
</div>
</div>
<div class="info">
<div class="left-wrap"><span class="date" >DATE-2</span></div>
</div>
<div class="clients-list">
<div>
<span class="client" >client7</span>
<span class="client" >client8</span>
</div>
</div>
<div class="clients-list">
<div>
<span class="client" >client9</span>
<span class="client" >client10</span>
</div>
</div>
<div class="clients-list">
<div>
<span class="client" >client11</span>
<span class="client" >client12</span>
</div>
</div>'''
soup=BeautifulSoup(html,'html.parser')
dates=soup.find_all(class_='date')
for date in dates:
print(date.text)
for item in date.parent.parent.find_next_siblings(class_='clients-list'):
if item.find_previous_sibling(class_='info').find_next(class_='date').text==date.text:
for client in item.find_all(class_='client'):
print(client.text)
输出:
DATE-1
client1
client2
client3
client4
client5
client6
DATE-2
client7
client8
client9
client10
client11
client12
关于python - 用汤获取多种元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58331914/
我正在努力学习 Ruby Koans 以尝试学习 Ruby,到目前为止一切顺利。我已经得到了贪婪的公案,在撰写本文时它是 183。我有一个可行的解决方案,但我觉得我只是拼凑了一堆 if/then 逻辑
我正在尝试创建一个扩展 boost 图形库行为的类。我希望我的类是一个模板,用户提供一个类型(类),用于在每个顶点存储属性。那只是背景。我正在努力创建一个更简洁的 typedef 来定义我的新类。 基
我正在使用 suds 包从网站查询 API,从他们的网站返回的数据如下所示: (1)。谁能告诉我这是什么格式? (2)。如果是这样,解析数据的最简单方法是什么?我已经使用 BeautifulSoup
所以我有一个看起来像这样的 html 文档: Speaker Name: Title of Talk | Subtitle | website.com ... [Other Stuff] Poste
我是一名优秀的程序员,十分优秀!