Python-如何解决TypeError

时间:2014-01-28 20:42:35

标签: python python-2.7 beautifulsoup screen-scraping

 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'

请帮忙。

1 个答案:

答案 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>