首页 > 解决方案 > 填充输入框并在Python中选择第一个下拉值

问题描述

我正在尝试访问一个只有一个输入框的网页,用一个字符串填充它,然后选择来自它的第一个下拉选项。选择第一个选项的原因是因为除非您选择它,否则它不起作用,即使文本包含与下拉选项完全相同的内容。

我已经设法为这个页面做了这样的事情: http ://www2.bmf.com.br/pages/portal/bmfbovespa/lumis/lum-ajustes-do-pregao-ptBR.asp

    #request
    with requests.Session() as s:
        esquema = {'dData1': d_0_}
        url_post = 'http://www2.bmf.com.br/pages/portal/bmfbovespa/lumis/lum-ajustes-do-pregao-ptBR.asp'


        r_1 = s.post(url_post, data=esquema)
        tabela_ajuste = pd.read_html(r_1.content,thousands='.', decimal=',')
        tabela_ajuste = tabela_ajuste[0].dropna(axis=0, thresh=4).fillna(method='ffill')

我想对此页面进行调整:https ://www.precodogas.com.br/fazer-pedido-ads.php

我会用文本填充输入Rua Joaquim Floriano 733, Itaim Bibi, São Paulo, 04534-012, BRA并选择第一个选项,然后抓取结果页面以获得69,99结果。

我想知道如何抓取页面,因为 URL 栏没有改变。

任何帮助,将不胜感激。

谢谢。

标签: python

解决方案


您可以尝试发布用于获取数据的 url。返回将采用 JSON 格式

我使用了以下网址

url ='https://www.precodogas.com.br/include/lista_revenda.php?acao=listar&pagenum=0&pagesize=21&filtervalue0=1&filteroperator0=0&filtercondition0=EQUAL&filterdatafield0=produto&filterscount=1&sortdatafield=valor&sortorder=asc'

我使用以下代码来获得响应

import requests
import json
esquema = {
       'log_bairro':'Itaim Bibi',
       'log_cep':'04534-012',
       'log_cidade':'São Paulo',
       'log_estado':'SP',
       'log_rua':'Rua Joaquim Floriano',
       'posLat':-23.585270016261035,
       'posLong':-46.676920031512594
}
response = requests.post(url,data=esquema)
data = json.loads(response.content)

如果你打印数据的值,你会得到以下

{
'resultado': '1',
'TotalRows': '1',
'rua': 'Rua Joaquim Floriano',
'Rows': [{
    'media': '4',
    'idproduto': '7781',
    'idrevendedor': '2414',
    'brinde': '',
    'maxdist': '5.6',
    'revendedor': 'CASA DO GÁS PERDIZES',
    'endereco': 'Rua Bragança, 48 - Pacaembu',
    'fabricante': 'Liquigás',
    'logomarca': 'liquigas.jpg',
    'valor': '69,99',
    'valorportaria': '69,99',
    'produto': 'Gás de Cozinha',
    'qtdparcela': '0',
    'peso': '13',
    'destaque': None,
    'distance': '5,1',
    'formaspg': [{
        'id': '1',
        'descricao': 'Dinheiro',
        'icon': 'fa-money'
    }, {
        'id': '2',
        'descricao': 'Cartão débito ou crédito',
        'icon': 'fa-credit-card'
    }, {
        'id': '3',
        'descricao': 'Cartão débito ou crédito',
        'icon': 'fa-credit-card-alt'
    }],
    'funcionamento': [{
        'id': '',
        'hrinicio': '08:30',
        'hrfim': '19:30',
        'descricao': 'Segunda a Sexta'
    }, {
        'id': '',
        'hrinicio': '08:30',
        'hrfim': '19:00',
        'descricao': 'Sábado'
    }, {
        'id': '',
        'hrinicio': '08:30',
        'hrfim': '13:30',
        'descricao': 'Domingo'
    }],
    'aberto': '1',
    'bgcolor': '#008651',
    'txtcolor': '#FFF'
}]

}


推荐阅读