The reason why this is breaking is because you have the soup.find function signature wrong. There is no first positional argument. The function signature looks like this:
def find(self, name=None, attrs={}, recursive=True, text=None, **kwargs)
So 'input' is assigned to the first keyword argument(in this case, name). So now you have 2 values assigned to keyword argument 'name'.
The correct syntax for what you are trying to do is likely this:
fooId = soup.find(name='input', attrs={'name': 'ASIN', 'type': 'hidden'})
This says, find all <input>
's in the HTML you are parsing with the attributes listed described in attrs.