如何通过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))
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))