javascript - Python Web Scraping:与日历交互
问题描述
使用以下网址,我设法通过访问 iframe 对象来解析所有表格内容。
但是,我现在正在尝试与可以在页面顶部找到但没有成功的日历进行交互。这个想法是能够从单个 python 脚本中解析不同日期的数据。
任何帮助,将不胜感激。
解决方案
可以通过执行 a并使用所需日期request.post()
设置参数来获得所需的表格。dData1
例如,以下显示了如何显示两个可能的日期。它打印每个日期的前几行数据:
from bs4 import BeautifulSoup
import requests
url = 'http://www2.bmf.com.br/pages/portal/bmfbovespa/lumis/lum-ajustes-do-pregao-enUS.asp'
dates = ['02/01/2019', '01/03/2019']
for date in dates:
req = requests.post(url, {'dData1' : date})
soup = BeautifulSoup(req.content, "html.parser")
print(f'\n{date}\n')
for tr in soup.table.find_all('tr')[1:10]:
row = [td.get_text(strip=True) for td in tr.find_all('td')]
print(row)
这将显示以下内容,您可以使用它来进行处理:
02/01/2019
['AFS - Futures', 'G19', '13,270.000', '13,270.000', '0.000', '0.00']
['', 'H19', '13,356.000', '13,353.100', '-2.900', '29.00']
['', 'J19', '13,407.300', '13,402.000', '-5.300', '53.00']
['', 'K19', '13,459.500', '13,455.200', '-4.300', '43.00']
['ARB - Argentinian peso', 'G19', '98.4420', '98.4420', '0.0000', '0.00']
['', 'H19', '94.9590', '95.5790', '0.6200', '93.00']
['', 'J19', '92.1780', '92.5210', '0.3430', '51.45']
['', 'K19', '89.3970', '89.8380', '0.4410', '66.15']
['AUD - Australian dollar', 'G19', '2,662.7830', '2,662.7830', '0.0000', '0.00']
01/03/2019
['AFS - Futures', 'G19', '14,452.900', '14,332.500', '-120.400', '1,204.00']
['', 'H19', '14,499.900', '14,381.300', '-118.600', '1,186.00']
['', 'J19', '14,555.900', '14,435.000', '-120.900', '1,209.00']
['ARB - Argentinian peso', 'G19', '97.5170', '96.1230', '-1.3940', '209.10']
['', 'H19', '92.8950', '91.4710', '-1.4240', '213.60']
['', 'J19', '89.9980', '88.7480', '-1.2500', '187.50']
['AUD - Australian dollar', 'G19', '2,674.0940', '2,638.5800', '-35.5140', '2,130.84']
['', 'H19', '2,681.9240', '2,645.7490', '-36.1750', '2,170.50']
['', 'J19', '2,689.0940', '2,652.6630', '-36.4310', '2,185.86']
正在使用的 URL 是通过在输入日期时查看页面请求的 URL 找到的。
推荐阅读
- visual-studio-code - 如何在 VS Code 中调试 Amplify JavaScript 函数
- image-processing - 从 X 和 Y 梯度中恢复图像
- python - 有没有办法在 Python3 中的 super() 时忽略 __init__() 方法的一部分?
- google-sheets - Google Sheets Query/ImportRange 公式 - 没有给我#REF 以便我可以连接到工作表?
- java - Apache Beam GenerateSequence 不会以指定的速率发射元素
- python - 如何在 lambda 中为 tkinter 按钮分配变量
- node.js - Node.js 12.x 的最佳 --lib 选项
- algorithm - 确定性选择的时间复杂度
- jenkins - 仅在主节点上签出和运行 SCM 管道
- javascript - 在 selenium 测试中使用 javascript 执行程序时 sendkeys 不起作用