Я пытаюсь удалить информацию с веб-сайта (название программы, ее идентификатор и местоположение) с помощью BeautifulSoup - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь удалить информацию с веб-сайта (название программы и идентификатор программы), и она возвращает пустой список.Я не уверен, что я перепутал синтаксис, но это то, что у меня есть soup.find_all ('h3', class _ = 'ama__h3')

ссылка на сайт https://freida.ama -assn.org / Freida / # / Programs? program = резиденции и специальности ToSearch = 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 голосов
/ 08 февраля 2019

Ваша ошибка в том, что вы анализируете с помощью html5lib.Для любого правильно сформированного 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...