我的代码如下:
import requests
import re
from bs4 import BeautifulSoup
page = requests.get(
"https://catalog.data.gov/dataset?q=&sort=metadata_created+desc")
soup = BeautifulSoup(page.content, 'html.parser')
# value = soup.find_all(class_='new-results')
for hit in soup.findAll(attrs={'class': 'dataset-heading'}):
print(hit.text)
我的结果有几行,例如
涵洞
爱荷华州地理地图服务器
基于潜在涡度的参数化对大气模型中对流层上层/低层平流层臭氧的规范
通过体外雌激素受体转录激活试验(T47D-KBluc)预测单个化学物质和混合物的雌激素活性与使用口服暴露的体内子宫营养试验的不确定性的证明
MRPAT模拟数据
Waterline ATS BG消毒数据
工业无线测量分析和情景生成的计算机代码
我的问题:
我怎样才能获得第一行,例如。在这种情况下'Culverts'
或者如何从bs4 findall结果中获取第一行?
答案 0 :(得分:0)
尝试soup.find
而不是soup.findAll
。
这只会返回第一个结果。
答案 1 :(得分:0)
我在你的代码中修改了一点。
import requests
import re
from bs4 import BeautifulSoup
page = requests.get(
"https://catalog.data.gov/dataset?q=&sort=metadata_created+desc")
soup = BeautifulSoup(page.content, 'html.parser')
# value = soup.find_all(class_='new-results')
#for hit in soup.find(attrs={'class': 'dataset-heading'}).text:
a = soup.find(attrs={'class': 'dataset-heading'}).text
print a
正如@Sid所说,使用查找来获取第一个元素。无需使用for循环和findall。