ResultSet object has no attribute 'find_all'
当我抓取一个网页时,我总是遇到一个问题。
AttributeError: ResultSet object has no attribute 'find'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?
任何人都可以告诉我该如何解决?我的代码如下:
1 2 3 4 5 6 7 8 9 10 | import requests r = requests.get('https://www.example.com') from bs4 import BeautifulSoup soup = BeautifulSoup(r.text, 'html.parser') results = soup.find_all('div', attrs={'class':'product-item item-template-0 alternative'}) records = [] for result in results: name = results.find('div', attrs={'class':'name'}).text price = results.find('div', attrs={'class':'price'}).text[13:-11] records.append((name, price,)) |
我想问一个接近的问题。如果我要剪贴多个页面,如下图所示,我使用以下代码,但仍仅剪贴首页可以解决此问题。
1 2 3 4 5 6 7 | import requests for i in range(100): url ="https://www.example.com/a/a_{}.format(i)" r = requests.get(url) from bs4 import BeautifulSoup soup = BeautifulSoup(r.text, 'html.parser') results = soup.find_all('div', attrs={'class':'product-item item-template-0 alternative'}) |
尝试一下。您将结果与结果混合在一起:
1 2 3 4 5 6 7 8 9 10 | import requests r = requests.get('https://www.example.com') from bs4 import BeautifulSoup soup = BeautifulSoup(r.text, 'html.parser') results = soup.find_all('div', attrs={'class':'product-item item-template-0 alternative'}) records = [] for result in results: name = result.find('div', attrs={'class':'name'}).text # result not results price = result.find('div', attrs={'class':'price'}).text[13:-11] records.append((name, price,)) |