如何通过class select 强标签的第二个实例?

How to select the second instance of strong tag by class?

import requests
from bs4 import BeautifulSoup
url = "https://check-for-flooding.service.gov.uk/station/8208"
r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml")
for each_div in soup.findAll('strong',{'class':'defra-flood-statistics__impact'}):
    print each_div

我似乎尝试了所有方法,包括各种第 n 种类型的变体,但我只是不断得到 'NoneType' object has no attribute 'text'

我对目前大约 1 米的河流水位很感兴趣,但出于某种原因我无法单独select它。

...
<dd class="defra-flood-statistics__value">
   <strong class="defra-flood-statistics__impact defra-flood-statistics__impact--normal">
   Normal
   </strong>
   0.05m to 1.90m <span class="govuk-visually-hidden">level here</span>
</dd>
...
<dd class="defra-flood-statistics__value">
   <strong class="defra-flood-statistics__impact">
   1.00m
   </strong>
   at <time datetime="">2:30pm</time> today
</dd>
...

注意: 这不会导致问题,但在较新的代码中使用 find_all() 而不是旧语法 findAll()

脚本仍在运行并正在选择您的元素 - 只需从您的结果集中选择第二个元素:

soup.find_all('strong',{'class':'defra-flood-statistics__impact'})[1].get_text(strip=True)

请求时刻的输出:

0.96m

示例

import requests
from bs4 import BeautifulSoup
url = "https://check-for-flooding.service.gov.uk/station/8208"
r = requests.get(url,headers=headers)
soup = BeautifulSoup(r.content, "lxml")
print(soup.find_all('strong',{'class':'defra-flood-statistics__impact'})[1].get_text(strip=True))