BeautifulSoup возвращает None, хотя элемент (div = "pendingcasescnts ng-scope") существует - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь почистить текст из мультикласса "Div" с сайта: Завершенные дела с подробностями

Пример класса "div"

Не удалось найти элемент div?

from bs4 import BeautifulSoup
from requests import get
url ="https://icsid.worldbank.org/en/Pages/cases/ConcludedCases.aspx?status=c"
response = get(url)
html_soup = BeautifulSoup(response.text, 'html.parser')
cases_containers = html_soup.find_all('div', class_ ="pendingcasescnts ng-scope")
print(len(cases_containers))

1 Ответ

0 голосов
/ 02 ноября 2018

Вместо просмотра HTML-кода вы можете заметить, что страница запрашивает всю информацию на экране с помощью отдельного запроса, который возвращает все необходимые данные в формате JSON. Это можно преобразовать в словарь Python, используя функцию запросов .json().

Ниже показано, как возвращаемый JSON можно использовать для извлечения полей Case No, Subject и Sector:

from urllib3.exceptions import InsecureRequestWarning
import requests

requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
r = requests.get('https://wbwcfe.worldbank.org/icsidext/service.svc/getbulkcasesbystatusid/json?id=cd28', verify=False)
data = r.json()

for case in data['GetBulkCasesByStatusIdResult']:
    print(f"Case No.: {case['caseno']}\nSubject: {case['subject']}\nSector: {case['econsector']}\n")    

Предоставление выходных данных в виде:

Case No.: CONC/18/1
Subject: Water services and electric power concession
Sector: Electric Power & Other Energy

Case No.: ARB/17/40
Subject: Hydrocarbon concession
Sector: Oil, Gas & Mining

Case No.: ARB/17/39
Subject: Hydrocarbon concession
Sector: Oil, Gas & Mining

URL-адрес был найден с помощью сетевых инструментов браузера при загрузке URL-адреса, указанного в вопросе.

Я рекомендую вам распечатать data и изучить все доступные вам поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...