Python WebScraping с использованием Soap + Request - PullRequest
1 голос
/ 14 апреля 2019

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

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


Я пытался получить только 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 Ответ

0 голосов
/ 14 апреля 2019

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