python - Python WebScraping 使用 Soap + Request
问题描述
我正在尝试在 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)
解决方案
在这种特殊情况下,您根本不需要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}]
推荐阅读
- javascript - 如何从 Phaser3 中的其他场景获取数据?
- javascript - Node JS文件系统模块读取目录排除文件
- flutter - 键盘自动从 ListView.Builder 中的 TextField 中消失
- spring - DI到静态场不好吗?
- r - 左连接时只带必要的列
- html - 我找不到如何将按钮放在输入旁边,因为它占用了所有空间
- javascript - PHP 发送邮件不起作用,价值索引无法访问
- php - 有没有办法在变量中包含 if 语句?
- python - python使用ctypes将二维数组传递给c函数
- flutter - 没有BuildContext的BottomNavigationBarItem的颤振本地化?