我正在一个站点上执行抓取,该站点包含一个用于检索数据和一个下拉列表输入的 java 脚本。我正在使用 requests-html 处理 java 部分,但我很难在下拉列表中选择值。
这是我的代码:
import requests_html
import bs4
url = 'https://www.cmegroup.com/trading/interest-rates/stir/eurodollar_quotes_settlements_futures.html'
params = {'tradeDate':'01/15/2019'}
session = requests_html.HTMLSession()
r = session.get(url, params=params)
r.html.render()
soup = bs4.BeautifulSoup(r.html.html, 'lxml')
r.session.close()
x = soup.body.find('select', attrs={'id':'cmeTradeDate'})
输出是 bs4.element.tag:
<select class="cmeSelect" id="cmeTradeDate" name="tradeDate" style="width: 268px; padding-right: 60px;"><option selected="" value="01/16/2019">Wednesday, 16 Jan 2019 (Final)</option> option value="01/15/2019">Tuesday, 15 Jan 2019 (Final)</option><option value="01/14/2019">Monday, 14 Jan 2019 (Final)</option><option value="01/11/2019">Friday, 11 Jan 2019 (Prelim)</option><option value="01/10/2019">Thursday, 10 Jan 2019 (Final)</option></select>
如您所见,下拉列表中的选定值是 1 月 16 日,即使我指定了 15 日。主表中的期货数据也是16日的。
使用 pandas 提取表格的代码非常简单:
pd.read_html(r.html.html, attrs={'id':'settlementsFuturesProductTable'})[0]
在提取 html 之前,如何从选项中选择日期?
(另外,附注,如果 requests-html 可以做与我使用 BeautifulSoup 相同的事情,那么我很想知道如何。)