2017-02-15 73 views
0

我的代码是下面给出如何获得使用python的bs4 findall结果的第一行?

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模拟

水线ATS BG消毒数据

计算机代码的工业无线测量分析和情景代

我的问题:

我怎样才能得到的只有第一行如。在这种情况下'涵洞'

或者如何从bs4获得第一行findall结果?

回答

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说,使用找到只得到第一个元素。无需使用循环和findall。

+0

作品!谢谢@Vekatesh_CTA –

0

尝试soup.find而不是soup.findAll

这只会返回第一个结果。

相关问题