python - 填充输入框并在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 栏没有改变。
任何帮助,将不胜感激。
谢谢。
解决方案
您可以尝试发布用于获取数据的 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'
}]
}
推荐阅读
- laravel - 在 Laravel 6 中选择不同的总分页错误
- microcontroller - 从 SRAM 启动
- python - 在 scipy.stats 中支持 float128 (np.longdouble)
- rust - 如何解决“类型不匹配解析预期的`()`,找到结构`元数据`”?
- mysql - mysql JOIN ON column = 'literal string or value' 不返回预期结果
- spring - 从 Spring Boot 2.0.3 更新到 2.2.4 后,ComponentScan 找不到自己的自定义注解
- acumos - Acumos 项目服务无法启动
- bash - JGit Flow 插件在输入密码后停止
- azure - Azure API 管理与逻辑应用
- postgresql - 原始 sql 查询返回单个结果