Создание веб-страниц на Python с использованием Soap запрос

#python #beautifulsoup

#python #beautifulsoup

Вопрос:

Я пытаюсь получить информацию о ссылке, используя soap в Python. Я могу получить весь массив с информацией, но я не знаю, как манипулировать информацией так, как я хочу.

Например: я хочу показать онлайн-имя (Nome) и статус.


Я пытался получить только div, но в результате он возвращает «none».

 from bs4 import BeautifulSoup
import requests

source = requests.get('http://apps.cptm.sp.gov.br:8080/AppMobileService/api/LinhasMetropolitanas').text

soup = BeautifulSoup(source, 'html.parser')

print(soup)
  

Комментарии:

1. Вы должны использовать source.content вместо source

Ответ №1:

В данном конкретном случае вам вообще не нужно BeautifulSoup . Вы можете напрямую получить source.contents , декодировать его и использовать ast.literal_eval для получения списка.

 import requests
import ast
source = requests.get('http://apps.cptm.sp.gov.br:8080/AppMobileService/api/LinhasMetropolitanas')
content_list=ast.literal_eval(source.content.decode("utf-8"))
for d in content_list:
    print(d['Nome'],d['Status'])
  

Вывод:

 AZUL Operação Normal
VERDE Operação Normal
VERMELHA Operação Normal
AMARELA Operação Normal
LILÁS Operação Normal
RUBI Operação Normal
DIAMANTE Velocidade Reduzida
ESMERALDA Velocidade Reduzida
TURQUESA Operação Normal
CORAL Operação Normal
SAFIRA Velocidade Reduzida
  

content_list выглядит так

 [{'Nome': 'AZUL', 'Status': 'Operação Normal', 'Tipo': 'M', 'Descricao': '', 'DataGeracao': '2019-04-13T22:50:44', 'LinhaId': 1}, {'Nome': 'VERDE', 'Status': 'Operação Normal', 'Tipo': 'M', 'Descricao': '', 'DataGeracao': '2019-04-13T22:50:44', 'LinhaId': 2}, {'Nome': 'VERMELHA', 'Status': 'Operação Normal', 'Tipo': 'M', 'Descricao': '', 'DataGeracao': '2019-04-13T22:50:44', 'LinhaId': 3}, {'Nome': 'AMARELA', 'Status': 'Operação Normal', 'Tipo': '4', 'Descricao': '', 'DataGeracao': '2019-04-13T22:50:00', 'LinhaId': 4}, {'Nome': 'LILÁS', 'Status': 'Operação Normal', 'Tipo': 'M', 'Descricao': '', 'DataGeracao': '2019-04-13T22:50:44', 'LinhaId': 5}, {'Nome': 'RUBI', 'Status': 'Operação Normal', 'Tipo': 'C', 'Descricao': '', 'DataGeracao': '2019-04-13T22:50:43', 'LinhaId': 7}, {'Nome': 'DIAMANTE', 'Status': 'Velocidade Reduzida', 'Tipo': 'C', 'Descricao': 'Por motivo de Serviços Programados , os trens da Linha 8 - Diamante estão circulando com intervalos maiores entre as Estações Júlio Prestes e Itapevi .', 'DataGeracao': '2019-04-13T22:50:43', 'LinhaId': 8}, {'Nome': 'ESMERALDA', 'Status': 'Velocidade Reduzida', 'Tipo': 'C', 'Descricao': 'Por motivo de Obras de Modernização , os trens da Linha 9 - Esmeralda estão circulando com intervalos maiores entre as Estações Osasco e Grajaú .', 'DataGeracao': '2019-04-13T22:50:43', 'LinhaId': 9}, {'Nome': 'TURQUESA', 'Status': 'Operação Normal', 'Tipo': 'C', 'Descricao': '', 'DataGeracao': '2019-04-13T22:50:43', 'LinhaId': 10}, {'Nome': 'CORAL', 'Status': 'Operação Normal', 'Tipo': 'C', 'Descricao': '', 'DataGeracao': '2019-04-13T22:50:43', 'LinhaId': 11}, {'Nome': 'SAFIRA', 'Status': 'Velocidade Reduzida', 'Tipo': 'C', 'Descricao': 'Por motivo de Obras de Modernização , os trens da Linha 12 - Safira estão circulando com intervalos maiores entre as Estações Brás e Calmon Viana .', 'DataGeracao': '2019-04-13T22:50:43', 'LinhaId': 12}]