关于python:ResultSet对象没有属性’find_all’

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,))