我正在尝试使用BeautifulSoup从网站(程序名称,程序ID和位置)中抓取信息

时间:2019-02-08 16:21:48

标签: python-3.x beautifulsoup

我正在尝试从网站(程序名称和程序ID)中删除信息,并且它返回空列表。 我不确定我是否混淆了语法,但这就是我所拥有的 soup.find_all('h3',class _ ='ama__h3')

网站链接为https://freida.ama-assn.org/Freida/#/programs?program=residencies&specialtiesToSearch=140

from urllib.request import urlopen
from bs4 import BeautifulSoup as BS
import pandas as pd
from urllib.parse import urlparse, urlsplit
import requests

res = requests.get('https://freida.ama-assn.org/Freida/#/programs?program=residencies&specialtiesToSearch=140')

soup = bs4.BeautifulSoup(res.text, 'html5lib')

print(soup.prettify())

soup.find_all('h3', class_='ama__h3')

1 个答案:

答案 0 :(得分:1)

您的错误是因为您正在使用html5lib进行解析。对于任何格式正确的html,解析器的选择并不是很重要。但是,对于格式不正确的html(像这样的html),html5lib似乎有问题。您应该使用html.parserlxml(显然html.parser更安全)

但是此代码正在执行您想做的事情:

soup = BeautifulSoup(res.text, 'html.parser')

programs = soup.find_all("a", class_='ama__promo--background')
for program in programs:
    program_name = program.find("h3").text
    program_id = program.find_all("small")[-1].text.split(': ')[1].strip()
    print(program_name, program_id