小编Yan*_*ang的帖子

结果集对象没有属性“find_all”

当我抓取一个网页时,我总是遇到一个问题。

AttributeError: ResultSet 对象没有属性“查找”。您可能将项目列表视为单个项目。当您打算调用 find() 时,您是否调用了 find_all()?

谁能告诉我如何解决这个问题?我的代码如下:

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,))
Run Code Online (Sandbox Code Playgroud)

我想问一个关闭的问题。如果我想报废多个页面。像下面这样的模式,我使用如下代码,但仍然只报废第一页你能解决这个问题吗?

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'})
Run Code Online (Sandbox Code Playgroud)

python attributeerror

4
推荐指数
1
解决办法
2万
查看次数

response.xpath 和 response.css 有什么区别

我尝试使用以下站点学习 response.xpath 和 response.css:http : //quotes.toscrape.com/

scrapy shell 'http://quotes.toscrape.com'
for quote in response.css("div.quote"):
    title = quote.css("span.text::text").extract()
Run Code Online (Sandbox Code Playgroud)

这只会得到一个值。但如果我使用 xpath:

scrapy shell 'http://quotes.toscrape.com'
    for quote in response.css("div.quote"):
    title = quote.xpath('//*[@class="text"]/text()').extract()
Run Code Online (Sandbox Code Playgroud)

它将获得整个页面上所有标题的列表。

有人可以告诉我使用这两种工具有什么不同吗?有些元素我比较喜欢用response.xpath,比如具体的表格内容,follow-sibling很容易获取,但是response.css无法获取

python scrapy

2
推荐指数
1
解决办法
4895
查看次数

标签 统计

python ×2

attributeerror ×1

scrapy ×1