我得到的是标签,而不是值

2024-09-28 03:23:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个网站上刮取一些值,但我得到的唯一的东西是标签。我试图获取的变量的实际值是空的。你知道吗

我正在使用请求和美化组。你知道吗


import requests
from bs4 import BeautifulSoup

request = requests.get("https://www.cofidis.pt/cofidis/cofidisredirect.aspx?Prazo=48&IDPartner=6708&Montante=10000&Seguro=0&IDOferta=20719&IDFinalidade=6&IDFinalidadeOption=100&DesignacaoFinalidade=Outros%20Projetos&origem=")
soup = BeautifulSoup(request.text, 'html.parser')    
text = soup.find(id="micro-simulador")
print(text.get_text())

但我只得到标签:


Resumo do seu pedido

Outros Projetos

Montante

Prazo

Mensalidade

TAEG

Seguro

TAN

MTIC

...

目标是得到“微型Simulator”中的值,比如TAEG=11.0%。你知道吗

有人能告诉我怎么了吗?你知道吗


Tags: textfromimportget网站request标签requests
3条回答

由于这些值位于输入标记内,因此可以按如下方式获取它们:

import requests
from bs4 import BeautifulSoup

request = requests.get("https://www.cofidis.pt/cofidis/cofidisredirect.aspx?Prazo=48&IDPartner=6708&Montante=10000&Seguro=0&IDOferta=20719&IDFinalidade=6&IDFinalidadeOption=100&DesignacaoFinalidade=Outros%20Projetos&origem=")
soup = BeautifulSoup(request.text, 'html.parser')    
text = soup.find(id="micro-simulador")
inputs = text.findAll('input')

for input_tag in inputs:
    print(input_tag.get('id'))
    print(input_tag.get('value'))

正如chitown88所说,有一个JSON请求,您可以对其进行解析并获得相同的结果,请参见下面的示例:

import requests

ID_PARTNER = 6708
ID_FINALIDADE = 6
PRAZO = 48
MONTANTE = 10000


def parse_request():
    url = 'https://www.cofidis.pt/Sim/wsGeralRest.svc/MontantePrazos/%s/%s' % (ID_PARTNER, ID_FINALIDADE)
    response = requests.request('GET', url)
    if response.ok:
        content = response.json()['COF_GET_MontantePrazos_RestResult']

        for montante_prazo in content['MontantesPrazos']:
            if montante_prazo['MNT'] == MONTANTE:
                montante_prazo['PM'] = list(filter(lambda v: v['PRZ'] == PRAZO, montante_prazo['PM']))
                return montante_prazo


print(parse_request())

输出:

{
  'PM': [
    {
      'PRZ': 48,
      'TAN': 8.9,
      'MES': 270.29,
      'IDO': 20719,
      'MSA': 254.64,
      'TAEG': 11.0,
      'IDE': 182587376,
      'MNS': 250.07,
      'DCM': 0.0,
      'ITO': 588,
      'PSA': 48,
      'MTI': 12243.36,
      'PRS': 48
    }
  ],
  'MNT': 10000.0,
  'DES': 'Crédito Pessoal',
  'IDP': 6708,
  'IDF': 6,
  'IDS': 1932
}

您可以通过XHR获得整个json响应。至于你到底需要拿出什么,就看你了,因为我不懂非英文标签。你知道吗

import requests

url = 'https://www.cofidis.pt/Sim/wsGeralRest.svc/MontantePrazos/6708/6'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'           }

jsonData = requests.get(url, headers=headers).json()

相关问题 更多 >

    热门问题