我正在尝试从网站(程序名称和程序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')
答案 0 :(得分:1)
您的错误是因为您正在使用html5lib进行解析。对于任何格式正确的html,解析器的选择并不是很重要。但是,对于格式不正确的html(像这样的html),html5lib似乎有问题。您应该使用html.parser
或lxml
(显然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