Reputation: 413
import urllib, urllib2
from bs4 import BeautifulSoup, Comment
url='http://www.amazon.in/product-reviews/B00EJBA7HC/ref=cm_cr_pr_top_link_1?ie=UTF8&pageNumber=1&showViewpoints=0&sortBy=bySubmissionDateDescending'
content = urllib2.urlopen(url).read()
soup = BeautifulSoup(content, "html.parser")
fooId = soup.find('input',name='ASIN',type='hidden') #Find the proper tag
value = fooId['value']
print value
I need this code to print the ASIN ID for the product from the URL given.
Instead, I get the following error:
TypeError: find() got multiple values for keyword argument 'name'
Please help.
Upvotes: 0
Views: 1047
Reputation: 1961
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.
Upvotes: 8