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
我需要此代码从给定的URL打印产品的ASIN ID。
相反,我收到以下错误:
TypeError: find() got multiple values for keyword argument 'name'
请帮忙。
答案 0 :(得分:6)
之所以破坏是因为你有一个错误的soup.find函数签名。没有第一个位置论点。函数签名如下所示:
def find(self, name=None, attrs={}, recursive=True, text=None, **kwargs)
因此'input'被分配给第一个关键字参数(在本例中为name)。所以现在你有2个值分配给关键字参数'name'。
您尝试执行的操作的正确语法可能是:
fooId = soup.find(name='input', attrs={'name': 'ASIN', 'type': 'hidden'})
这就是说,使用attrs中描述的属性查找要解析的HTML中的所有<input>
。