这是一个涉及Python,Beautiful Soup和HTML以及Investopedia API的问题。
涉及的第一部分是这个Python块,它接受一个输入并根据给定的输入执行一个函数(action是raw_input
):
if action == 'trade':
symbol = raw_input("Symbol: ")
order_type = raw_input("Order Type: ")
quantity = raw_input("Quantity: ")
if order_type == 'buy':
client.trade(str(symbol), ita.Action.buy, int(quantity))
elif order_type == 'sell':
client.trade(str(symbol), ita.Action.sell, int(quantity))
elif order_type == 'short':
client.trade(str(symbol), ita.Action.short, int(quantity))
第二个参数(ita.Action.[order_type]
),按照API文档中的指示编写,并且如代码本身所示,引用此块:
# input transaction type
[option.attrs.pop("selected", "") for option in trade_form.select("select#transactionTypeDropDown")[0]("option")]
trade_form.select("select#transactionTypeDropDown")[0].find("option", {"value": str(orderType.value)})["selected"] = True
该块使用Beautiful Soup中的.find
来定位一个格式如下的下拉菜单:
<select name="transactionTypeDropDown" id="transactionTypeDropDown" style="width: auto;">
<option value="1">Buy</option>
<option value="2">Sell</option>
<option value="3">Sell Short</option>
<option value="4">Buy to Cover</option>
</select>
在API的文档中,列出的示例操作如下:
client.trade("GOOG", ita.Action.buy, 10)
但是,AttributeError
在该给定行中报告'int' object has no attribute 'value'
,即使我尝试运行该行,因为它本身也是在文档中编写的。
File "/fakepath/MMIAS/ita/ita.py", line 233, in trade
trade_form.select("select#transactionTypeDropDown")[0].find("option", {"value": str(orderType.value)})["selected"] = True
AttributeError: 'int' object has no attribute 'value'
我假设有问题的int
对象是下拉菜单中的option
值,有了这个,我假设int
,也许是1 - 4,占用orderType
参数。那么,为什么会建议参数为ita.Action.[buy/sell/short/etc]
,而不仅仅是一个整数值?如果整数值满足该参数,为什么它会返回相同的错误?帮帮我理解。