当class=high打印平均时薪m/m时,如何过滤?
<tr class="calendar__row calendar_row calendar__row--grey calendar__row--no-grid nogrid" data-eventid="117390" data-ecobaseid="159" data-touchable="">
<td class="calendar__cell calendar__impact impact calendar__impact calendar__impact--high">
<div class="calendar__impact-icon calendar__impact-icon--screen">
<span title="High Impact Expected" class="high"></span>
</div>
<div class="calendar__impact-icon calendar__impact-icon--print">
<img src="https://resources.faireconomy.media/images/sprites/mm-impact-red.png" alt="" width="14" height="12">
</div>
</td>
<td class="calendar__cell calendar__currency currency calendar__currency--right-of-impact" title="United States">
US
</td>
<td class="calendar__cell calendar__event event">
<div>
<span class="calendar__event-title">Average Hourly Earnings m/m</span>
</div>
</td>
发布于 2021-09-10 08:07:23
如果我没记错的话,您希望找到包含class="high"
的日历行,然后打印事件:
from bs4 import BeautifulSoup
html_doc = """
<tr class="calendar__row calendar_row calendar__row--grey calendar__row--no-grid nogrid" data-eventid="117390" data-ecobaseid="159" data-touchable="">
<td class="calendar__cell calendar__impact impact calendar__impact calendar__impact--high">
<div class="calendar__impact-icon calendar__impact-icon--screen">
<span title="High Impact Expected" class="high"></span>
</div>
<div class="calendar__impact-icon calendar__impact-icon--print">
<img src="https://resources.faireconomy.media/images/sprites/mm-impact-red.png" alt="" width="14" height="12">
</div>
</td>
<td class="calendar__cell calendar__currency currency calendar__currency--right-of-impact" title="United States">
US
</td>
<td class="calendar__cell calendar__event event">
<div>
<span class="calendar__event-title">Average Hourly Earnings m/m</span>
</div>
</td>
</tr>
"""
soup = BeautifulSoup(html_doc, "html.parser")
for calendar_row in soup.select("tr.calendar_row"):
if not calendar_row.find(class_="high"):
continue
event = calendar_row.find(class_="event")
print(event.get_text(strip=True))
打印:
Average Hourly Earnings m/m
或者:只使用CSS选择器:
event = soup.select_one(".calendar_row:has(.high) .event")
print(event.get_text(strip=True))
https://stackoverflow.com/questions/69128804
复制相似问题