使用Beautiful Soup解释器集成失败

时间:2017-08-23 05:03:50

标签: python python-2.7 python-3.x beautifulsoup

此问题涉及previously asked question

我一直在使用Investopedia API,它使用Beautiful Soup与Investopedia交易模拟器进行互动。我最初的问题是AttributeError的报告,但该报告似乎不再重要(如果您希望了解原始问题的详细信息,请参阅下文)。

在提出建议后,我安装了Python 3.6,因为我以前使用的是2.7,并再次运行我的测试。那个时候,操作正常。但是,我不知道原因。为什么,如果API构建为与p2.7和p3.6一起运行,那么函数在3.6中工作?它与Beautiful Soup集成有什么关系吗?或者input vs raw_input

先决条件详情

涉及的第一部分是这个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],而不仅仅是一个整数值?如果整数值满足该参数,为什么它会返回相同的错误?

0 个答案:

没有答案