如何使用python获取bs4 findall结果中的第一行?

时间:2017-02-15 11:56:42

标签: python beautifulsoup

我的代码如下:

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结果中获取第一行?

2 个答案:

答案 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。